schedule_task() * 之后的参数必须是可迭代的,而不是 int
schedule_task() argument after * must be an iterable, not int
在这里,我使用带有 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})
在这里,我使用带有 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})