使用grpc遇到greenlet.error: cannot switch to a different thread解决方法
发生问题场景:
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解决方法相关推荐
- python3 pycharm 断点调试 报错 greenlet.error: cannot switch to a different thread
错误信息 greenlet.error: cannot switch to a different thread 解决办法 setting->build->python debugger- ...
- 使用 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 ...
- php zip.so 编译出错,php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法...
本文实例讲述了php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法.分享给大家供大家参考.具体如下: ZipArchive是 ...
- Android studio ERROR: Software caused connection abort: recv failed 解决方法
使用Android studio打开kotlin项目时报错:ERROR: Software caused connection abort: recv failed 解决方法:修改三个文件即可 1.修 ...
- Error parsing HTTP request header Larger错误解决方法
Error parsing HTTP request header Larger错误解决方法 参考文章: (1)Error parsing HTTP request header Larger错误解决 ...
- 当遇到error: stray ‘\241‘ in program错误的解决方法
当遇到error: stray '\241' in program错误的解决方法 报错的意思是c/c++中的产生了编译错误. 该错误是指源程序中有非法字符,需要将非法字符去掉.一般是由于coder使用 ...
- 已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!!
已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!! 文章目录 报错问题 解决方法 福利 报错问题 粉丝 ...
- vue打包时报错 Error: No PostCSS Config found in 的解决方法
1.报错 vue 项目打包时报了如下错误:Error: No PostCSS Config found in... 2.解决方法: 没有PostCSS配置,因此需要添加一个 postcss.confi ...
- joycon 连不上_Nintendo Switch Joy-Con断线问题的解决方法
有部分玩家反应Joy-Con出现了反应迟钝或是断线的问题.任天堂官方根据这一问题,在相关Q&A页面中给出了几条解决方案.下面为大家带来了Nintendo Switch Joy-Con断线问题解 ...
最新文章
- 开发Android必知的工具
- 危机永远回来,只是什么时候的问题
- 党在心中(turtle画图)
- python转义引号的作用_python传到前端的数据,双引号被转义的问题
- C++学习笔记—srand()和rand()
- vb6.0 listview隐藏水平方向滚动条_为Vuetify的UI组件添加滚动条
- 被罚 50 亿美元,Android 究竟招谁惹谁了?
- 防火墙虚拟系统互访配置实例
- 苹果mac高效先进的网页开发工具:Espresso
- C语言程序100例之C#版-029
- 最详细的 Deepin安装idea2018及破解教程,有效期到2100年
- 金融工程 | 远期与期货概述
- LaTeX中的中英文字体设置、混排
- DVD刻录缓慢的原因及方法
- mysql 超卖_mysql 解决超卖问题的锁分析
- 戴尔OptiPlex 7060 SSD+HHD+win10和ubuntu双系统安装
- IAR工程中的各个文件的含义
- 步进电机工作原理与编程
- Python中if语句
- Mathtp**下载