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

schedule_task() argument after * must be an iterable, not 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})