2014-01-21 50 views
24

是否可以使用PyCharm等ide来调试uwsgi应用程序?我可以通过直接从pycharm运行它们来调试基于烧瓶的应用程序,但是甚至无法从pycharm中运行uwsgi应用程序。使用pycharm调试uwsgi python应用程序

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

+1

如果你的wsgi应用程序从Python脚本启动它非常可能。 –

回答

18

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

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

据我所知,您不能使用PyCharm中的“Attach to Process”,因为您的WSGI应用程序正在运行嵌入到uWSGI中,并且没有可见的Python进程。然而,Remote debugging就像一种魅力。

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

  2. 复制下一个pycharm-debug-py3k.egg发现你的瓶的应用程序,或复制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) 
    
  5. 在PyCharm,启动远程调试会话。 PyCharm的控制台应显示以下行:

    Waiting for process connection... 
    
  6. 从uWSGI运行你的应用程序像往常一样。它应该连接到调试器,PyCharm的控制台应显示:

    Connected to pydev debugger (build 139.711) 
    
  7. 您的应用程序应该打破对pydevd.settrace(...)线。然后你可以像往常一样继续使用PyCharm调试器(断点等)

2

不知道如何解释你的问题,因为你正在混合苹果和橘子。 Flask是一个框架,uWSGI是一个应用程序服务器。不过,我会尽力回答。

据我所知,uWSGI不是纯粹的python,所以在PyCharm中调试它并不是微不足道的,即使它是可能的。

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

相关问题