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

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

33
remudada 21 Янв 2014 в 16:01

3 ответа

Лучший ответ

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

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

Насколько мне известно, вы не можете использовать «Attach to Process» из PyCharm, потому что ваше приложение 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)
    
  5. В PyCharm запустите сеанс удаленной отладки. Консоль PyCharm должна отобразить следующую строку:

    Waiting for process connection...
    
  6. Запустите приложение из uWSGI как обычно. Он должен подключиться к отладчику, и консоль PyCharm должна отобразить:

    Connected to pydev debugger (build 139.711)
    
  7. Ваше приложение должно прерваться на строке pydevd.settrace(...). Затем вы можете продолжить и использовать отладчик PyCharm как обычно (точки останова и т. Д.)

27
Julien Lirochon 13 Дек 2014 в 21:27

Теперь есть официальное руководство, как это сделать: https://www.jetbrains.com/help/pycharm /remote-debugging-with-product.html#

Если ваш код уже существует на удаленном компьютере, вам нужно только следовать Create a run/debug configuration

Вам понадобится IP-адрес, на котором работает PyCharm. Когда вы запускаете удаленный отладчик из PyCharm, он создает сервер отладки. Ваш код подключится к этому серверу.

В моем случае я использую Vagrant с частным IP-адресом гостя 192.168.0.3, а частный IP-адрес хоста - 192.168.0.1. Мой код в удаленных гостях будет подключаться к серверу отладки через IP-адрес хоста. Поэтому мне нужно использовать IP-адрес моего хоста в коде, который я хочу отлаживать.

1
dieend 4 Мар 2020 в 02:42

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

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

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

3
Pierre-Antoine 13 Сен 2014 в 10:54