Подтвердить что ты не робот

Отладка приложения uwsgi python с использованием pycharm

Можно ли отлаживать приложение uwsgi, используя такой идеал, как PyCharm? Я могу отлично отлаживать флеш-приложения, запуская их непосредственно из pycharm, но не могу даже запустить приложение uwsgi изнутри pycharm.

Нужно ли использовать удаленную отладку? Можно ли запустить uwsgi-приложение из pycharm с помощью run?

4b9b3361

Ответ 1

Вы можете запустить приложение WSGI вне uWSGI для разработки и отладки.

Однако иногда это невозможно, например, если ваше приложение использует функции API uWSGI.

Насколько я знаю, вы не можете использовать "Attach to Process" из PyCharm, потому что ваше приложение WSGI работает в uWSGI, и нет видимых процессов Python. Удаленная отладка работает как шарм.

  • Найдите файлы pycharm-debug*.egg в вашем дистрибутиве PyCharm. Например, OSX можно найти в /Applications/PyCharm.app/Contents

  • Скопируйте pycharm-debug-py3k.egg рядом с вашим флеш-приложением или скопируйте pycharm-debug.egg, если вы используете Python 2.7

  • В PyCharm создайте конфигурацию "Удаленная отладка Python" в диалоговом окне "Run/Debug Configurations". В этом примере я использую 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 как обычно (точки останова и т.д.)

Ответ 2

Не уверен, как интерпретировать ваш вопрос, когда вы смешиваете яблоки и апельсины. Флажок - это фреймворк, uWSGI - сервер приложений. Я постараюсь ответить, однако.

Насколько я знаю, uWSGI не является чистым python, поэтому отладка его в PyCharm не будет тривиальной, даже если это возможно.

Однако, поскольку вы используете uWSGI для запуска вашего приложения, я предполагаю, что он соответствует протоколу WSGI. В этом случае для целей отладки вы также можете запустить его из простого механизма приложения с чистым питоном, например wsgiref.simple_server.WSGIServer.