【发布时间】:2015-10-23 12:17:33
【问题描述】:
所以在我的 django 项目中,我目前有一个 celery beat 时间表,用于在计时器上定期运行的任务。
现在,我的任务是从一个以 json 响应的 URL 请求大约 250 次,并且由于从该 URL 请求是有限的,整个任务可能需要 5 分钟到 10 分钟,具体取决于请求的成功程度。
不是通过计时器定期运行此任务,而是如何根据上次任务完成来运行它。
例如:如果最后一个任务在 10 秒前完成,则再次运行此任务
tasks.py
@app.task()
def run_db():
allPlayers = Player.objects.all()
for player in allPlayers:
a = get_json(player.name)
if a is None:
pass
else:
player.mmr = a['rnk_amm_team_rating']
player.save()
print player.mmr
time.sleep(2)
settings.py
CELERYBEAT_SCHEDULE = {
'add-every-10-seconds': {
'task': 'ladder.tasks.run_db',
'schedule': timedelta(seconds=10),
}
}
【问题讨论】: