2014-01-21 80 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)運行它。

相關問題