使用pycharm调试uwsgi python应用程序

rem*_*ada 29 debugging pycharm uwsgi

是否可以使用像PyCharm这样的ide来调试uwsgi应用程序?我可以通过直接从pycharm运行它们来调试基于flask的应用程序,但是甚至无法在pycharm中运行uwsgi应用程序.

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

Jul*_*hon 26

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

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

据我所知,你不能使用PyCharm的"Attach to Process",因为你的WSGI应用程序运行嵌入到uWSGI中,并且没有可见的Python进程.然而,远程调试就像一个魅力.

  1. pycharm-debug*.egg在PyCharm发行版中找到文件.例如,在OSX上都可以找到/Applications/PyCharm.app/Contents

  2. 复制pycharm-debug-py3k.egg到Flask应用程序旁边,或者pycharm-debug.egg如果您使用的是Python 2.7 ,则复制

  3. 在PyCharm中,从"运行/调试配置"对话框中创建"Python远程调试"配置.在这个例子中我使用localhost和端口4444.该对话框将显示相应的pydevd.settrace(...)行.

  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)
    
    Run Code Online (Sandbox Code Playgroud)
  5. 在PyCharm中,启动远程调试会话.PyCharm的控制台应该显示以下行:

    Waiting for process connection...
    
    Run Code Online (Sandbox Code Playgroud)
  6. 像往常一样从uWSGI运行你的应用程序.它应该附加到调试器,PyCharm的控制台应该显示:

    Connected to pydev debugger (build 139.711)
    
    Run Code Online (Sandbox Code Playgroud)
  7. 你的应用应该突破了pydevd.settrace(...).然后你可以像往常一样继续使用PyCharm调试器(断点等)

  • 如果您具有相同的uwsgi设置,除了现在有了带有一些服务的docker-compose文件之外,这种方法将如何改变? (3认同)
  • @rexbelia 你有没有用 docker compose 解决过这个问题?由于某种原因,我的 uswgi 进程不会分叉 (2认同)