Предоставляет ли опция django runserver возможность запуска других сценариев перезапуска?

Недавно я играл с джанго и сельдереем. Во время разработки раздражает тот факт, что мне приходится перезапускать демон celery каждый раз, когда я изменяю задачу. Когда я разрабатываю, мне обычно нравится использовать «manage.py runserver», который автоматически перезагружает фреймворк django при изменениях в моих приложениях.

Есть ли способ добавить хук в процесс перезагрузки, который выполняет runserver, чтобы он автоматически перезапускал работающий демон сельдерея?

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


person GrantJ    schedule 01.03.2011    source источник


Ответы (5)


Для этой цели отлично подходит Django-supervisor. Вы можете запустить сервер Django, Celery и все, что вам нужно, и иметь разные конфигурации для серверов разработки и производства. Он также знает, что демон celery перезагружается при изменении кода. https://github.com/rfk/django-supervisor

person LS55321    schedule 27.06.2011

Я считаю, что вы можете установить CELERY_ALWAYS_EAGER на true.

person goh    schedule 26.01.2012

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

Вот простая команда управления, которая печатает сообщение при перезагрузке

import subprocess

from django.core.management.base import BaseCommand
from django.utils import autoreload


def reload():
    print('Code changed. Auto reloading...')    

class Command(BaseCommand):

    def handle(self, *args, **options):
        autoreload.main(reload)

Теперь вы можете сохранить файл reload.py и запустить его с помощью python manage.py reload. Команда управления для перезагрузки рабочих процессов celery доступна здесь.

person ChillarAnand    schedule 08.03.2018

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

Невозможно добавить хук, и я думаю, что не стоит редактировать исходный код django только для выполнения перезапуска. Лично я, пока разрабатываю, предпочитаю видеть выходную оболочку сельдерея, украшенную цветом, а не хвост журналов, более читаемую.

person Mauro Rocco    schedule 02.03.2011