场景说明
经过gevent和monkey补丁之后的应用程序,断点是无法命中,调试是无法工作的。
解决方案
方案一:
Pycharm中按图1找到设置界面,添加启动服务端的环境变量如图2,增加GEVENT_SUPPORT=True即可解决,如果服务启动的时候需要根据不同的环境变量读取不同的配置文件,也可以按如图2设置添加。

图1

图2
方案二:
1、方案一虽然可以实现要求,但是比较麻烦的是如果我们要调试多个文件,每个文件都要做同样的事,那么有没有一种一劳永逸的办法呢?我们可以在Pycharm -> Preferences -> Build, Execution, Deployment -> Python Debugger中进行设置,如图3勾选上Gevent compatible即可在整个项目中Debug时都可以使用。

图3
2、如果想实现项目全局根据不同的环境变量读取不同的配置文件,我们可以编辑~/.bash_profile文件增加导出该环境变量:export QLAAS_CFG=/Users/pangqilong/Develop/qlaas/qlaas.prod.yml
3、针对想调试有参数的cli、test等文件时,可以如图4在Script parameters中给携带上。

图4
总结
Debug是非常重要的工具,有助于我们更好的阅读代码及查看代码底层实现,使用好这个工具可以使我们事半功倍。