是否可以使用PyCharm等ide來調試uwsgi應用程序?我可以通過直接從pycharm運行它們來調試基於燒瓶的應用程序,但是甚至無法從pycharm中運行uwsgi應用程序。使用pycharm調試uwsgi python應用程序
我必須使用遠程調試嗎?使用run可以從pycharm中啓動一個uwsgi應用程序嗎?
是否可以使用PyCharm等ide來調試uwsgi應用程序?我可以通過直接從pycharm運行它們來調試基於燒瓶的應用程序,但是甚至無法從pycharm中運行uwsgi應用程序。使用pycharm調試uwsgi python應用程序
我必須使用遠程調試嗎?使用run可以從pycharm中啓動一個uwsgi應用程序嗎?
您仍然可以在uWSGI之外運行您的WSGI應用程序用於開發和調試目的。
但有時這是不可能的,例如,如果您的應用程序依賴於uWSGI API功能。
據我所知,您不能使用PyCharm中的「Attach to Process」,因爲您的WSGI應用程序正在運行嵌入到uWSGI中,並且沒有可見的Python進程。然而,Remote debugging就像一種魅力。
在您的PyCharm發行版中找到pycharm-debug*.egg
文件。例如,在OSX既可以在/Applications/PyCharm.app/Contents
複製下一個pycharm-debug-py3k.egg
發現你的瓶的應用程序,或複製pycharm-debug.egg
,而是如果你使用Python 2.7
在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,啓動遠程調試會話。 PyCharm的控制檯應顯示以下行:
Waiting for process connection...
從uWSGI運行你的應用程序像往常一樣。它應該連接到調試器,PyCharm的控制檯應顯示:
Connected to pydev debugger (build 139.711)
您的應用程序應該打破對pydevd.settrace(...)
線。然後你可以像往常一樣繼續使用PyCharm調試器(斷點等)
不知道如何解釋你的問題,因爲你正在混合蘋果和橘子。 Flask是一個框架,uWSGI是一個應用程序服務器。不過,我會盡力回答。
據我所知,uWSGI不是純粹的python,所以在PyCharm中調試它並不是微不足道的,即使它是可能的。
但是,由於您正在使用uWSGI來運行您的應用程序,因此我假設它符合WSGI protocol。在這種情況下,爲了調試目的,您可以從簡單的純Python應用程序引擎(如wsgiref.simple_server.WSGIServer)運行它。
如果你的wsgi應用程序從Python腳本啓動它非常可能。 –