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

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

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

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

Ответы [ 5 ]

4 голосов
/ 27 июня 2011

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

2 голосов
/ 26 января 2012

Полагаю, вы можете установить CELERY_ALWAYS_EAGER на true.

1 голос
/ 08 марта 2018

Да.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.Команда управления перезагрузить сельдерея доступна здесь .

1 голос
/ 01 июня 2012

Celery 2.5 имеет экспериментальную опцию времени выполнения --autoreload, которую также можно использовать для этой цели. Вот более подробная информация в заметках о выпуске . При этом, я думаю, django-supervisor (через @Lee Semel) выглядит как лучший способ сделать что-то. Я подумал, что опубликую эту альтернативу здесь, если другие читатели не захотят настраивать другое приложение для асинхронной обработки.

1 голос
/ 02 марта 2011

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

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

...