Хобрук: Ваш путь к мастерству в программировании

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

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

Я использую PyCharm 4.x.

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

28.03.2015

Ответы:


1

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

пичарм сельдерей

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

25.02.2016
  • это решение сработало для меня в pycharm 2020 pro edit: я полагаю, что workdir был тем, чего не хватало 01.03.2021
  • Мне пришлось указать полный путь к исполняемому файлу celery в IntelliJ 2021.1. 30.04.2021

  • 2

    Для Windows, протестировано с Celery ›= 4.0

    Добавьте новую конфигурацию (запуск/отладка) типа Python:

    Затем на вкладке конфигурации: переключите первый параметр (Цель для запуска) с Путь к скрипту на Имя модуля и заполните значение:

    celery.bin.celery
    

    как на снимке ниже:

    введите здесь описание изображения

    21.09.2020
  • Спасибо, искал это! 22.09.2020
  • Спасибо, я обнаружил, что -P solo нужно добавить 14.01.2021

  • 3

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

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

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

    07.08.2016

    4

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

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

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

    Скриншот конфигурации запуска PyCharm для запуска celery worker manage.py

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

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

    19.02.2018

    5

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

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

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

    18.04.2018

    6

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

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

    7

    Если вы используете Gevent для Celery, не забудьте установить флажок Preferences > Build, Execution, Deployment > Python Debugger > Gevent Compatible.

    19.05.2020
  • Спасительный комментарий 04.12.2020

  • 8

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

    • Сценарий: /home/app/env/bin/celery
    • Параметры скрипта: worker -B -n qrc -Q qrc -l info --app=backend.celery

      • Where -B is for celerybeet, -n is node name, -Q is queue name, -l is log level, and --app is the app name, a django app with celery.py next to settings.py in my case.
    • Рабочий каталог: /home/app/server/ т.е. моя корневая папка django

    01.11.2016
    Новые материалы

    Все, что вам нужно знать о «Внимании» и «Трансформерах» — Углубленное понимание — Часть 2
    Внимание, Самостоятельное внимание, Многоголовое внимание, Маскированное многоголовое внимание, Трансформаторы, BERT и GPT В предыдущем рассказе я объяснил, что такое механизм внимания, а также..

    Расставание с локальным хранилищем
    Что такое локальное хранилище Локальное хранилище — это механизм, который позволяет веб-приложениям хранить данные на стороне клиента. Это часть API веб-хранилища, которое также включает в себя..

    CycleGAN: как машинное обучение обучает непарному преобразованию изображения в изображение
    Недавно я прочитал статью CycleGAN ( ссылка ), которая показалась мне очень интересной, потому что модели CycleGAN обладают невероятной способностью точно преобразовывать изображения во что-то, чем..

    «Изучение передовых технологий: подробный обзор последних инноваций в области технологий…
    Технологии постоянно развиваются, и последние инновации в технологической отрасли могут изменить наш образ жизни и работы так, как мы никогда не считали возможным. В этой статье подробно..

    Позволяя машинам думать самостоятельно
    Позволяя машинам думать самостоятельно Чтобы создать «сильный ИИ», нам не нужно смотреть дальше когнитивных процессов человеческого мозга. Мы увидим, что процессы, включающие ожидание,..

    От AlphaGo до самоуправляемых автомобилей: понимание основ обучения с подкреплением
    Руководство для начинающих по RL! Готовы ли вы исследовать передовые технологии искусственного интеллекта? Откройте для себя захватывающий мир обучения с подкреплением ! От ошеломляющей победы..

    Как сделать все элементы равными из списка в минимальных операциях в Python, используя math.ceil()
    Сегодня мы узнаем, как найти минимальные операции, необходимые для того, чтобы сделать все элементы из списка равными, используя Python в качестве языка программирования. Я использую PyCharm в..