我必须使用django创建一个带有用户界面的应用程序,所以现在我将有一个用户界面,用户将从下拉列表中选择某个mp3.file,他将选择一些日期和时间。那时我的服务器必须安排那个特定的工作,它必须按时完成。
为了在python中执行此操作,我现在尝试了计划, apschedule ,但我无法在给定时间运行作业(可能有很多作业要运行)
然后我得到了一个像使用芹菜的建议 - 我在这里有一些疑问:
2.我可以使用celery从数据库过滤数据时间和文件名后运行作业吗?
CELERYBEAT_SCHEDULE = {
# Executes every Monday morning at 7:30 A.M
'add-every-monday-morning': {
'task': 'tasks.add',
'schedule': crontab(hour=7, minute=30, day_of_week=1),
'args': (16, 16),
},
}

答案 0 :(得分:0)
您可以使用ETA参数动态安排任务,例如使用从数据库模型获取的DateTime:
dt = SomeModel.objects.get(pk=12345).datetimefield
add.apply_async((2, 2), eta=dt)
eta必须是具有时区信息的日期时间对象。任务将在 指定的日期和时间之后或之后执行 - 由于许多任务在队列中等待或网络延迟,可能会出现延迟。有关详细信息,请参阅文档here。
答案 1 :(得分:0)
有两种方法。一个是countdown
,另一个是eta
。任何方式eta
都将在幕后转换为倒计时。
>>> from datetime import datetime, timedelta
>>> tomorrow = datetime.utcnow() + timedelta(days=1) #will work after 24 hour
>>> add.apply_async((2, 2), eta=tomorrow)
了解更多http://docs.celeryproject.org/en/latest/userguide/calling.html#eta-and-countdown