我目前正在尝试使用Flask框架在App Engine中排队任务,但我遇到了一些困难。我运行我的代码,当我在localhost:8000 / taskqueue上检查管理服务器时,似乎任务排队正常。但是,控制台反复打印以下错误:
WARNING 2016-10-05 17:08:09,560 taskqueue_stub.py:1981] Task task1 failed to execute. This task will retry in 0.100 seconds
此外,它似乎没有执行所需的代码。
我的问题是,为什么我的代码没有工作?我为这个非常广泛的问题道歉,但是没有堆栈跟踪来指导我更具体的事情。我已经简化了我的代码,但是我的错误可以重现。下面的代码应该打印短语"示例任务"到控制台5次。但是,这不会发生。
#main.py
from google.appengine.api.taskqueue import taskqueue
from flask import Flask, Response
app = Flask(__name__)
@app.route("/get")
def get():
for i in range(5):
# attempt to execute the desired function 5 times
# the message "sample task" should be printed to the console five times
task = taskqueue.add(
queue_name='my-queue',
url='/sample_task',
)
message += 'Task {} enqueued, ETA {}.<br>'.format(task.name, task.eta)
response = Response(message)
return response
@app.route("/sample_task")
def sample_task():
message = "sample task"
print (message)
return Response(message)
if __name__ == "__main__":
app.run()
的app.yaml
# app.yaml
runtime: python27
api_version: 1
threadsafe: true
# [START handlers]
handlers:
- url: /sample_task
script: main.app
login: admin
- url: /get
script: main.app
login: admin
queue.yaml中
# queue.yaml
queue:
- name: my-queue
rate: 1/s
bucket_size: 40
max_concurrent_requests: 1
答案 0 :(得分:0)
我在这里找到了答案:https://stackoverflow.com/a/13552794
显然,我所要做的就是将POST方法添加到为排队调用的处理程序中。
所以
@app.route("/sample_task")
def sample_task():
...
应改为:
@app.route("/sample_task", methods=['POST'])
def sample_task():
...