在这里,我使用带有countdown
和expires
参数的方法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})