发生问题场景:

grpc服务端配置有一个使用eventlet.db_pool.DatabaseConnector创建的数据库连接池还有其他基本的条件语句,在使用客户端调用服务端的函数执行数据库操作时,几乎66%的概率在服务端发生阻塞,首先数据库是没问题的。重启客户端再重新调用相同的函数,服务端会报 greenlet.error: cannot switch to a different thread 的错误。

尝试解决方法:

官方:在grpc的github的issues里找到这个问题https://github.com/grpc/grpc/issues/15880#,最终比较官方的回答是这个问题确实存在,在未来可能会被修复,官方更倾向于使用asyncio异步框架。这个问题主要是因为grpc在和基于gevent实现的模块同时使用时会发生线程阻塞而无法切换的错误。

偏方:在网上还搜到其他的方法,比如在代码最开始使用:

from gevent import monkey
monkey.patch_all()

经过试验,没有起到解决服务端阻塞的作用。

让步解决方法:

替换基于gevent的模块。之前的数据库连接池使用的是eventlet.db_pool.DatabaseConnector,改成DBuitls.PooledDB.PooledDB就能让步解决这个问题。关于DBuitls.PooledDB.PooledDB的简单使用可以参考https://www.cnblogs.com/apollo1616/p/10269992.html。

使用grpc遇到greenlet.error: cannot switch to a different thread解决方法相关推荐

  1. python3 pycharm 断点调试 报错 greenlet.error: cannot switch to a different thread

    错误信息 greenlet.error: cannot switch to a different thread 解决办法 setting->build->python debugger- ...

  2. 使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法

    使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法 参考文章: (1)使用 EasyBCD 安装Ubuntu 14.04 Error 1 ...

  3. php zip.so 编译出错,php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法...

    本文实例讲述了php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法.分享给大家供大家参考.具体如下: ZipArchive是 ...

  4. Android studio ERROR: Software caused connection abort: recv failed 解决方法

    使用Android studio打开kotlin项目时报错:ERROR: Software caused connection abort: recv failed 解决方法:修改三个文件即可 1.修 ...

  5. Error parsing HTTP request header Larger错误解决方法

    Error parsing HTTP request header Larger错误解决方法 参考文章: (1)Error parsing HTTP request header Larger错误解决 ...

  6. 当遇到error: stray ‘\241‘ in program错误的解决方法

    当遇到error: stray '\241' in program错误的解决方法 报错的意思是c/c++中的产生了编译错误. 该错误是指源程序中有非法字符,需要将非法字符去掉.一般是由于coder使用 ...

  7. 已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!!

    已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!! 文章目录 报错问题 解决方法 福利 报错问题 粉丝 ...

  8. vue打包时报错 Error: No PostCSS Config found in 的解决方法

    1.报错 vue 项目打包时报了如下错误:Error: No PostCSS Config found in... 2.解决方法: 没有PostCSS配置,因此需要添加一个 postcss.confi ...

  9. joycon 连不上_Nintendo Switch Joy-Con断线问题的解决方法

    有部分玩家反应Joy-Con出现了反应迟钝或是断线的问题.任天堂官方根据这一问题,在相关Q&A页面中给出了几条解决方案.下面为大家带来了Nintendo Switch Joy-Con断线问题解 ...

最新文章

  1. 开发Android必知的工具
  2. 危机永远回来,只是什么时候的问题
  3. 党在心中(turtle画图)
  4. python转义引号的作用_python传到前端的数据,双引号被转义的问题
  5. C++学习笔记—srand()和rand()
  6. vb6.0 listview隐藏水平方向滚动条_为Vuetify的UI组件添加滚动条
  7. 被罚 50 亿美元,Android 究竟招谁惹谁了?
  8. 防火墙虚拟系统互访配置实例
  9. 苹果mac高效先进的网页开发工具:Espresso
  10. C语言程序100例之C#版-029
  11. 最详细的 Deepin安装idea2018及破解教程,有效期到2100年
  12. 金融工程 | 远期与期货概述
  13. LaTeX中的中英文字体设置、混排
  14. DVD刻录缓慢的原因及方法
  15. mysql 超卖_mysql 解决超卖问题的锁分析
  16. 戴尔OptiPlex 7060 SSD+HHD+win10和ubuntu双系统安装
  17. IAR工程中的各个文件的含义
  18. 步进电机工作原理与编程
  19. Python中if语句
  20. Mathtp**下载

热门文章

  1. 连续傅里叶变换和离散傅里叶变换的关系
  2. 初识html5小游戏
  3. macbook移动文件
  4. 图像RGB与数组关系理解
  5. 「Paper Writing」插入信封符号
  6. 硬件笔记(3)---- SOP8 SPI FLASH短接下载程序的原理
  7. 【翻页电子书制作软件】名编辑电子杂志大师教程 | 添加flash动画
  8. 从零开始安装Intellij Idea14
  9. c语言的标志数组图的遍历,天津商业大学-计算机科学与技术专业-高职升本-课件5...
  10. 记录周三12.8的刷题心得ODAY