我有这个:
eta_date = date.today()
eta = datetime.combine(eta_date, time.max)
scheduled_task.apply_async(eta=eta)
scheduled_tasks:
@task
def scheduled_task():
for obj in ModelData.objects.all():
send_data(obj)
send_data函数将对象作为JSON发送到其他服务器。我用芹菜。我希望在一天结束时启动任务,但是这样一个对象每秒发送一次。怎么做?
答案 0 :(得分:2)
allcaps已经在评论部分告诉了你答案,但无论如何我都会回答这个问题。只需在send_data
之后添加一个睡眠,等待X秒。
import time
@task
def scheduled_task():
for obj in ModelData.objects.all():
send_data(obj)
time.sleep(1) # You can also use a float here if 1 second is too long
答案 1 :(得分:0)
另一种选择可能是在ModelData中为每个obj生成一个任务,并将其限制设置为1s。
@task
def scheduled_task():
for obj in ModelData.objects.all():
send_data_task.delay(obj)
@task(rate_limit='1/s')
def send_data_task(obj):
send_data(obj)