* 后面的 schedule_task() 参数必须是可迭代的,而不是 int



在这里,我使用带有countdownexpires参数的方法apply_async在倒计时后执行任务,并在某个日期时间使任务过期。

但是我得到了这个错误

Django Version: 3.0.6 
Exception Type: TypeError
Exception Value:    schedule_task() argument after * must be an iterable, not int

如何解决此错误?

任务

@periodic_task(run_every=crontab(minute=1), ignore_result=False)  
def schedule_task(pk):
task = Task.objects.get(pk=pk)
unique_id = str(uuid4()) 

视图

form = CreateTaskForm(request.POST)
if form.is_valid():
unique_id = str(uuid4())
obj = form.save(commit=False)           
obj.created_by = request.user
obj.unique_id = unique_id
obj.status = 0
obj.save()
form.save_m2m()
# schedule_task.delay(obj.pk)
schedule_task.apply_async((obj.pk),expires=datetime.datetime.now() + datetime.timedelta(minutes=5), countdown=int(obj.search_frequency))
return redirect('crawler:task-list')

也许这对你有帮助。欲了解更多信息,请查看 https://docs.celeryproject.org/en/stable/userguide/calling.html#id2

schedule_task.apply_async(expires=datetime.datetime.now() + datetime.timedelta(minutes=5), countdown=int(obj.search_frequency),kwargs={"pk":obj.pk})

相关内容

  • 没有找到相关文章

最新更新