В настоящее время я тестирую хронометр Django для долговременной задачи.Django Chroniker: Как остановить настраиваемую команду при ее запуске
Да, я также опробовал Сельдерей на длительное время, но я хочу попробовать его с помощью django-chroniker, так как он объединяет больше из материалов для администрирования, начиная с &.
Проблема, с которой я столкнулся, заключается в том, что, хотя «запуск» работает, кнопка остановки в django отображает только хорошее сообщение, но, похоже, фактически не останавливает мой процесс.
Так что я создал очень простую пользовательскую команду:
import time
import logging
import logging.config
from django.core.management.base import BaseCommand, CommandError
from longrunningfunction import run_extraction
class Command(BaseCommand):
help = 'Closes the specified poll for voting'
logging.config.fileConfig('logging.conf')
def handle(self, *args, **options):
logger = logging.getLogger('top')
logger.debug('Launching test_cmd %s %s', args, options)
run_extraction()
Так что теперь команда запускается, когда я нажимаю на остановке в админ. Итак, что мне нужно сделать, чтобы это было учтено в моем коде? Как я могу прервать выполнение run_extraction?
Я также видел в исходном коде, что поле job_stop задано равным True. Так что мне нужно будет передать ссылку на это поле и регулярно проверять его?
--edit 28/08/2015 После того, как подвергая проблему на IRC, я теперь рассматривает 3 следующие решения:
Использование сигналов для run_extraction, чтобы обнаружить изменение состояния и действовать соответствующим образом. https://docs.djangoproject.com/en/1.8/topics/signals/
Использование Postgres уведомит спусковые http://www.postgresql.org/docs/9.0/static/sql-notify.html
Установить в Chron запустить каждую минуту, получить все объекты с force_start или force_stop Истина затем действовать соответственно.
Примечание: 2 & 3 являются Y3K идеи о Джанго Irc канале.
Лучшее!