Python 3.x 使用uwsgi服务器上运行的Flask应用程序中的pdb时,bdb.bdbGuit将引发
我正在我的项目中使用库。因为WebSocket需要和主Flask应用程序“并行运行”,所以我需要使用这个库。当我试图在Python 3.x 使用uwsgi服务器上运行的Flask应用程序中的pdb时,bdb.bdbGuit将引发,python-3.x,flask,uwsgi,gevent,Python 3.x,Flask,Uwsgi,Gevent,我正在我的项目中使用库。因为WebSocket需要和主Flask应用程序“并行运行”,所以我需要使用这个库。当我试图在create\u app方法中为调试器设置断点时,会出现此问题: 我的app.py文件: 导入前的猴子修补标准库 #其他模块 从gevent导入猴子 猴子 导入操作系统 导入logging.config 从烧瓶进口烧瓶 从dynaconf导入烧瓶dynaconf ... #其他进口 def配置应用程序(应用程序): ''' 配置应用程序设置。 ''' FlaskDynaconf(
create\u app
方法中为调试器设置断点时,会出现此问题:
我的app.py
文件:
导入前的猴子修补标准库
#其他模块
从gevent导入猴子
猴子
导入操作系统
导入logging.config
从烧瓶进口烧瓶
从dynaconf导入烧瓶dynaconf
...
#其他进口
def配置应用程序(应用程序):
'''
配置应用程序设置。
'''
FlaskDynaconf(应用程序)
进口pdb;pdb.set_trace()
logging.config.fileConfig(app.config.logging\u设置)
...
def create_应用程序(从_芹菜运行_=False):
'''
创建新的Flask应用程序实例。
'''
app=烧瓶('automoticz')
配置应用程序(应用程序)
# ...
返回应用程序
当我启动服务器(我正在使用)时,我收到以下错误:
$uwsgi--http 0.0.0.0:5000\
--gevent 1000\
--http WebSocket\
--主人\
--wsgi文件automoticz/wsgi.py\
--可调用应用程序
在
gevent
下运行时,有没有办法使pdb
正常工作?在挖掘了一点之后,我意识到你不应该使用它
从gevent.pywsgi导入WSGIServer
application=WSGIServer((application.config.SERVER\u主机、application.config.SERVER\u端口)、application)
因为它不起作用。因此,您可以使用较旧的wsgi.py
版本。现在问题出现了,因为当您使用uwsgi
时,没有stdin
,它被指向/dev/null
。由于没有stdin,调试器无法启动。见下面的线程
因此,您需要在运行uwsgi
时添加--hounor stdin
和--gevent
uwsgi--http 0.0.0.0:5000\
--gevent 10\
--http WebSocket\
--主人\
--wsgi文件automoticz/wsgi.py\
--荣誉标准
现在调试工作开始了
我希望您正在使用
gevent
中的WSGIServer
<代码>从gevent.pywsgi导入WSGIServer?我可以将gevent.pywsgi.WSGIServer
与uwsgi
一起使用吗?是的,wsgi
是一个标准,任何wsgi
兼容的服务器都可以与uwsgi
@TarunLalwani一起工作。好的,我让pdb与gevent一起使用WSGIServer,正如你所说的,但只有在使用serve\u forever()
运行它时才有效。当传递可调用的cretated adserver=WSGIServer(('0.0.0.0',5000),app)时
烧瓶app未加载到uwsgi中,并且我接收到***未加载app。进入完全动态模式***
message请提供最少的git repo进行调试
Traceback (most recent call last):
File "automoticz/wsgi.py", line 3, in <module>
app = create_app()
File "./automoticz/app.py", line 138, in create_app
configure_app(app)
File "./automoticz/app.py", line 28, in configure_app
logging.config.fileConfig(app.config.LOGGING_SETTINGS)
File "./automoticz/app.py", line 28, in configure_app
logging.config.fileConfig(app.config.LOGGING_SETTINGS)
File "/usr/lib/python3.5/bdb.py", line 48, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/lib/python3.5/bdb.py", line 67, in dispatch_line
if self.quitting: raise BdbQuit
bdb.BdbQuit
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 22694)
spawned uWSGI worker 1 (pid: 22702, cores: 1000)
spawned uWSGI http 1 (pid: 22703)
*** running gevent loop engine [addr:0x494fa0] ***