每30秒钟一次Django芹菜crontab - 它甚至有可能吗?

每30秒钟一次Django芹菜crontab - 它甚至有可能吗?

问题描述:

是否可以运行django芹菜crontab非常30秒在特定时间每30秒钟一次Django芹菜crontab - 它甚至有可能吗?

只有分钟,小时和天的设置。

我有crontab的工作,但我想运行它每30秒,而不是每分钟。

或者...

是否有可能打开间隔了30秒,只为这一天的一段时间内开启的时间间隔时间表?

如果你真的需要要做到这一点,你需要迅速的解决方案,你可以采取增加: 睡眠 到脚本。 (很明显,您需要为您的脚本添加一个参数,将睡眠时间设置为0或30秒,然后将脚本两次添加到crontab,一次以0作为参数,其次为30)。

请不要对此投票!这是一个解决方案,虽然我很清楚这不是一个理想的解决方案。

+0

感谢您的建议! – snakesNbronies

Very first example they have in the documentation is ...

例:运行tasks.add任务每30秒。

from datetime import timedelta 

CELERYBEAT_SCHEDULE = { 
    "runs-every-30-seconds": { 
     "task": "tasks.add", 
     "schedule": timedelta(seconds=30), 
     "args": (16, 16) 
    }, 
} 
+1

我需要它每30秒运行**在特定的时间**。我也遇到了他们在documentation_中的第一个例子。 – snakesNbronies

+0

@thong:你在 – vartec

+0

这个问题上没有说得很清楚,我也在寻找解决方案(并且遇到了这篇文章)。如果timedelta可以与w/crontab结合,会非常好。 – brizz

我会另外安排任务,使你的替代解决方案去/禁用的首要任务:

# tasks.py 
from djcelery.models import PeriodicTask 

@app.task 
def toggle_thirty_second_task: 
    # you would use whatever you named your task below 
    thirty_second_tasks = PeriodicTask.objects.filter(name='runs-every-30-seconds') 
    if thirty_second_tasks: 
     # this returned an array, so we'll want to look at the first object 
     thirty_second_task = thirty_second_tasks[0] 
     # toggle the enabled value 
     thirty_second_task.enabled = not thirty_second_task.enabled 
     thirty_second_task.save() 

然后,只需安排使用你所需要的时间一个crontab这个任务切换。或者,您可以安排一项任务打开它,一个关闭它,而不处理切换逻辑。

希望这会有所帮助。

sc