Как включить удаленную отладку сельдерея в PyCharm?

Я пытаюсь найти некоторые инструкции о том, как включить отладку PyCharm в моих процессах сельдерея на удаленной машине. На удаленном компьютере работает Ubuntu 14.04.

Я запускаю PyCharm 4.x.

Я видел другую информацию, которая ссылается на то, что другие работают, но не смогли найти правильные инструкции.

Ответ 1

У вас может быть Run Configuration для запуска ваших работников celery, который затем позволяет вам отлаживать просто, нажав кнопку debug. Вот как я установил это в PyCharm 5:

pycharm celery

Вам нужно настроить удаленный интерпретатор python, а затем установить другие конфигурации, как показано выше. Обратите внимание, что Working directory указывает на папку bin удаленного интерпретатора с установленным celery.

Ответ 2

Просто добавьте следующую конфигурацию:

from celery import current_app
current_app.conf.CELERY_ALWAYS_EAGER = True
current_app.conf.CELERY_EAGER_PROPAGATES_EXCEPTIONS = True

Таким образом, сельдерей выполняется в том же потоке, что и текущий исполняемый поток.

Ответ 3

К сожалению, большинство решений не работают в Windows. (Был отдельный вопрос конкретно об этом, но, к сожалению, он был закрыт как дубликат этого. Поэтому я сейчас отвечу на этот вопрос.)

Проблема в том, что в Windows автономная команда celery представляет собой командный файл, поэтому PyCharm не может подключить к нему отладчик Python.

Вплоть до Celery 3.x вы можете создать конфигурацию запуска manage.py и вызвать для нее команду celery worker.

Screenshot of PyCharm run configuration for running manage.py celery worker

Обратите внимание, что вам не нужно устанавливать здесь --app, поскольку приложение определяется командой управления через DJANGO_SETTINGS_MODULE.

К сожалению, команда управления celery была функцией библиотеки django-celery, которая не поддерживается в Celery 4.x. На данный момент я не нашел решения для Celery 4.x.

Ответ 4

Моя рабочая конфигурация:

  • Script: /home/app/env/bin/celery
  • Script Параметры: worker -B -n qrc -Q qrc -l info --app=backend.celery

    • Где -B для сельдерея, -n - это имя node, -Q - это имя очереди, -l - уровень журнала, и --app - это имя приложения, приложение django с celery.py рядом с settings.py в моем случае.
  • Рабочий каталог: /home/app/server/ т.е. моя корневая папка django

Ответ 5

Я использую PyCharm 2017 и должен был сделать что-то очень похожее на ответы выше, но я специально должен был указать полный/абсолютный путь к celery в поле "Сценарий"

Кроме того, я не уверен, имеет ли PyCharm 4 эту функцию, но более новые версии позволяют напрямую подключаться к работающему процессу python, выбрав "Выполнить"> "Присоединить к локальному процессу"...

Это позволяет вам запускать сельдерей, каким вы были раньше (возможно, в терминале), а затем позволить Pycharm вступить во владение

Ответ 6

в Windows добавьте следующие параметры в вашу отладочную конфигурацию в Pycharm

-A YouAppName worker  --loglevel=debug -P solo --without-gossip --without-mingle --without-heartbeat