【发布时间】:2019-10-17 17:27:25
【问题描述】:
我们正在执行任务队列。根据文档here,我们创建了一个名为“generate-reports”的新队列。我们的 queue.yaml 看起来像这样。
- name: generate-reports
target: v2.task-module
rate: 5/s
max_concurrent_requests: 10
bucket_size: 40
我们检查谷歌云控制台,可以验证“生成报告”队列是否处于活动状态。
然后我们使用它在这个队列中放置一个任务。
class scheduledownloadreport(webapp2.RequestHandler):
# Call the report to get the elements
ScheduleReportDownload_cloudapi_obj = schedulereportdownload_cloudapi.ScheduleReportDownload_cloudapi()
data_sent_obj = ScheduleReportDownload_cloudapi_obj.schedule_download(
download_obj)
class schedulereportdownload_cloudapi():
taskqueue.Queue(name='generate-reports')
task = taskqueue.add(
url='/schedulebackendtasktocreatereport',
target='worker',
queue_name = 'generate-reports',
params={
"task_data" : task_data
})
我们也试过这个。
taskqueue.Queue(name='generate-reports')
task = taskqueue.add(
url='/worker/schedulebackendtasktocreatereport',
target='worker',
queue_name = 'generate-reports',
params={
"task_data" : task_data
})
在这两种情况下,我们都会收到以下错误 -
"POST /schedulebackendtasktocreatereport HTTP/1.1" 404 113 https://MY-PROJECT-NAME/schedulereportdownload
如果我们只使用(不带 queue_name 参数)
taskqueue.Queue(name='generate-reports')
task = taskqueue.add(
url='/schedulebackendtasktocreatereport',
target='worker',
params={
"task_data" : task_data
})
这些任务就像一个魅力。他们被排入默认队列。
已更新解决方案
- name: generate-reports
target: worker
rate: 5/s
max_concurrent_requests: 10
bucket_size: 40
【问题讨论】:
-
为什么你的 queue.yaml 有
target: v2.task-module而你对taskqueue.Queue的调用有target='worker' -
通过反复试验找到了这个。将其更改为 target: worker 并且它起作用了。感谢您的评论。
-
@Jacktileman 如果您可以将解决方案作为答案发布,以便让其他有相同问题的用户获得更多可见性,那就太好了!谢谢:)
-
@eespinola - 完成。
-
@Jacktileman 感谢您更新您的帖子,但最好的方法是作为新答案发布,以便其他用户可以看到该帖子已经接受了答案。你可以这样做并接受你自己的答案,或者我可以使用community wiki。
标签: python google-app-engine google-tasks