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

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

最佳答案

您仍然可以在uWSGI之外运行WSGI应用程序以进行开发和调试。

但是有时这是不可能的,例如,如果您的应用程序依赖uWSGI API功能。

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

  • 在PyCharm发行版中找到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中,启动远程调试 session 。 PyCharm的控制台应显示以下行:
    Waiting for process connection...
    
  • 照常从uWSGI运行您的应用程序。它应该附加到调试器,并且PyCharm的控制台应该显示:
    Connected to pydev debugger (build 139.711)
    
  • 您的应用程序应在pydevd.settrace(...)行上中断。然后,您可以像往常一样(断点等)继续并使用PyCharm调试器
  • 关于debugging - 使用pycharm调试uwsgi python应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21257568/

    10-12 16:46
    查看更多