Python Django Chroniker:如何在自定义命令运行时停止该命令

Python Django Chroniker:如何在自定义命令运行时停止该命令,python,django,cron,celery,Python,Django,Cron,Celery,我目前正在测试Django chroniker的长期运行任务 是的,我也测试了芹菜(很长一段时间),但我还是想尝试一下django chroniker,因为它集成了更多开箱即用的管理功能来启动和停止 我面临的问题是,虽然“run”确实有效,但django中的stop按钮只显示一条很好的消息,但似乎并没有真正停止我的进程 因此,我创建了一个非常简单的自定义命令: import time import logging import logging.config from django.core.m

我目前正在测试Django chroniker的长期运行任务

是的,我也测试了芹菜(很长一段时间),但我还是想尝试一下django chroniker,因为它集成了更多开箱即用的管理功能来启动和停止

我面临的问题是,虽然“run”确实有效,但django中的stop按钮只显示一条很好的消息,但似乎并没有真正停止我的进程

因此,我创建了一个非常简单的自定义命令:

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()
现在命令启动了,我在admin中单击stop。 那么,我需要做什么才能在代码中考虑到这一点呢?如何中断运行提取的执行

我还在源代码中看到作业“force_stop”字段设置为True。所以我需要传递一个对该字段的引用并定期检查它

--2015年8月28日编辑 在IRC上暴露问题后,我现在考虑以下3种解决方案:

  • 使用run_提取信号检测状态变化并相应采取行动。

  • 使用postgres通知触发器

  • 将计时设置为每分钟运行一次,使所有对象的“强制启动”或“强制停止”设置为True,然后相应地执行操作

  • 注:2和3是django irc频道上的Y3K创意

    最好的

    嗯,听起来你真的很想在这里。PGSQL有一些“通知”功能IIRC?也许你可以看看

    嗯,或者如果你不介意的话,设置一个chron,每N分钟运行一次,然后使用force_start或force_stop True获得X对象,然后调用你需要的。不知道这个选项的性能有多高

    来自IRC上的#django:)