是否可以使用PyCharm之类的工具调试uwsgi应用程序?我可以通过直接从pycharm运行基于烧瓶的应用程序来进行调试,但不能甚至在pycharm中运行uwsgi应用程序。
我必须使用远程调试吗?是否可以在pycharm中使用run启动uwsgi应用程序?
据我所知,您不能使用PyCharm的“附加到进程”,因为您的WSGI应用程序正在嵌入到uWSGI中运行,并且没有可见的Python进程。 Remote debugging但是像吊饰一样工作。
pycharm-debug*.egg
文件。例如,在OSX上都可以在/Applications/PyCharm.app/Contents
中找到在Flask应用程序旁边复制pycharm-debug-py3k.egg
,或者如果您使用的是Python 2.7,则复制pycharm-debug.egg
在PyCharm中,从“运行/调试配置”对话框创建“ Python远程调试”配置。在此示例中,我使用localhost
和端口4444
。该对话框将向您显示相应的pydevd.settrace(...)
行。
将以下代码添加到您的应用程序中:
import sys
sys.path.append('pycharm-debug-py3k.egg') # replace by pycharm-debug.egg for Python 2.7
import pydevd
# the following line can be copied from "Run/Debug Configurations" dialog
pydevd.settrace('localhost', port=4444, stdoutToServer=True, stderrToServer=True)
在PyCharm中,启动远程调试会话。 PyCharm的控制台应显示以下行:
Waiting for process connection...
照常从uWSGI运行您的应用程序。它应该附加到调试器,并且PyCharm的控制台应该显示:
Connected to pydev debugger (build 139.711)
您的应用应在pydevd.settrace(...)
行上中断。然后,您可以像往常一样继续使用PyCharm调试器(断点等)
但是,由于您使用uWSGI运行应用程序,因此我假设它符合WSGI protocol。在这种情况下,出于调试目的,您也可以从简单的纯Python应用程序引擎(例如wsgiref.simple_server.WSGIServer)运行它。