使用pycharm调试uwsgi python应用程序

问题描述 投票:29回答:3

是否可以使用PyCharm之类的工具调试uwsgi应用程序?我可以通过直接从pycharm运行基于烧瓶的应用程序来进行调试,但不能甚至在pycharm中运行uwsgi应用程序。

我必须使用远程调试吗?是否可以在pycharm中使用run启动uwsgi应用程序?

debugging pycharm uwsgi
3个回答
26
投票
但是有时候这是不可能的,例如,如果您的应用程序依赖于uWSGI API功能。

据我所知,您不能使用PyCharm的“附加到进程”,因为您的WSGI应用程序正在嵌入到uWSGI中运行,并且没有可见的Python进程。 Remote debugging但是像吊饰一样工作。

    在PyCharm发行版中找到pycharm-debug*.egg文件。例如,在OSX上都可以在/Applications/PyCharm.app/Contents中找到
  1. 在Flask应用程序旁边复制pycharm-debug-py3k.egg,或者如果您使用的是Python 2.7,则复制pycharm-debug.egg

  2. 在PyCharm中,从“运行/调试配置”对话框创建“ Python远程调试”配置。在此示例中,我使用localhost和端口4444。该对话框将向您显示相应的pydevd.settrace(...)行。

  3. 将以下代码添加到您的应用程序中:

  4. 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)
  5. 在PyCharm中,启动远程调试会话。 PyCharm的控制台应显示以下行:
  6. Waiting for process connection...
  7. 照常从uWSGI运行您的应用程序。它应该附加到调试器,并且PyCharm的控制台应该显示:
  8. Connected to pydev debugger (build 139.711)
  9. 您的应用应在pydevd.settrace(...)行上中断。然后,您可以像往常一样继续使用PyCharm调试器(断点等)

3
投票
据我所知,uWSGI不是纯python,因此即使有可能,在PyCharm中对其进行调试也不是一件容易的事。

但是,由于您使用uWSGI运行应用程序,因此我假设它符合WSGI protocol。在这种情况下,出于调试目的,您也可以从简单的纯Python应用程序引擎(例如wsgiref.simple_server.WSGIServer)运行它。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.