django - 定期用 celery 执行任务
问题描述
我正在尝试在 Django 中使用 celery 执行一项任务。我想在每天下午 12:30 执行该任务,为此我在我的 tasks.py 中写了这个
@periodic_task(run_every=crontab(minute=30, hour=12), name="elast")
def elast():
do something
这不起作用,但如果我想每 30 秒安排一次,我会编写这段代码
@periodic_task(run_every=(timedelta(seconds=30)), name="elast")
def elast():
do something
这行得通。我想知道第一段代码有什么问题?任何帮助将不胜感激。
解决方案
根据最新的 celery 4.3 版本,在 12:30 pm 执行任务下面的代码将很有用 celery.py
from celery.schedules import crontab
app.conf.beat_schedule = {
# Executes every day at 12:30 pm.
'run-every-afternoon': {
'task': 'tasks.elast',
'schedule': crontab(hour=12, minute=30),
'args': (),
},
}
任务.py
import celery
@celery.task
def elast():
do something
启动 celery beat scheduler celery -A proj worker -B
对于 celery 2.0 附近的旧版本
from celery.task.schedules import crontab
from celery.decorators import periodic_task
@periodic_task(run_every=crontab(hour=12, minute=30))
def elast():
print("code execution started.")
请检查时区设置。
推荐阅读
- python - tensorflow 从 numpy opencv 奇怪的大小创建 TFrecord
- javascript - 根据父元素的类获取图像覆盖/类以显示 onclick
- angular - 发布请求未到达服务器端
- html - 创建自定义表格,如 Excel 工作表
- cakephp - cakephp分页中的自定义查找器方法
- android - 如何突出显示回收站视图项目的选定和未选定文本和图标?
- master-data-services - Master Data Business Rules Protecting Column from Edit / Change
- visual-studio-2015 - 工具下的 Visual Studio 运行栏未显示
- sql - 按 CASE 排序的 SQL Server Row_number
- phpstorm - 受保护的属性数组声明始终在换行符上,但我希望它在同一行