【问题标题】:Google App Engine - Python - Task Queue - How can i add a list of tasks?Google App Engine - Python - 任务队列 - 如何添加任务列表?
【发布时间】:2019-02-24 17:20:53
【问题描述】:

我的代码可以正常工作:

taskqueue.add(url = MY_URL, params={'id': 42}, queue_name='random-message')

this official document 中它说:“将一个任务或任务列表添加到此队列中。”

但我无法理解。

我已经试过了:

tasks = []
tasks.append(taskqueue.Task(url = MY_URL, params={'id': 42}))
taskqueue.add(tasks, queue_name='random-message')

但它引发了一个我不明白的错误:

'Task payloads must be strings; invalid payload: %r' % payload)

我尝试了许多其他的小变种,但无论如何都不起作用。

【问题讨论】:

  • 确实是这样,有点。我在询问之前看到了那篇文章,但它似乎不同,因为它使用了 Queue.add(task)。经过更多阅读后,我发现我的 taskqueue.add(task) 只是一个惰性函数,一次不能以任何方式接收超过 1 个任务。但是这个问题让我很困惑,只有在理解了我的错误之后它才有用。我现在无论如何都会回答我的问题。

标签: python google-app-engine task-queue


【解决方案1】:

问题是:

taskqueue.add(task)

它一次不能接收多个任务。正确的做法是:

taskqueue.Queue.add(tasks)

我的代码现在可以工作了:

tasks = []
tasks.append(taskqueue.Task(url = MY_URL, params={'id': 42}))
taskqueue.Queue('random-message').add(tasks)

【讨论】:

    【解决方案2】:

    您可能遇到了命名冲突,因为tasks.add() 方法的参数。试试:

    task_list = []
    task_list.append(taskqueue.Task(url = MY_URL, params={'id': 42}))
    taskqueue.add(tasks=task_list, queue_name='random-message')
    

    或:

    taskqueue.add(task_list, queue_name='random-message')
    

    【讨论】:

    • 这不是问题,两种都试过了,都没有效果。
    • 请更新问题,然后显示新的错误日志
    • 无需更新,我找到了解决方案并发布了它。它在上面:) 它还没有标记,因为我要等一天。
    猜你喜欢
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 2011-06-24
    • 2011-04-29
    相关资源
    最近更新 更多