问题
I can't even get a task queue to fire a simple print statement.
I don't know if my app structure is incorrect or not...
What's the most simple example of a task queue and the structure for it?
Because this isn't working for me:
@app.route('/task', methods=["GET", "POST"])
def testtask():
print "Hi, I'm calling the task"
taskqueue.add(
url='/execute_task'
)
return "I called the task"
@app.route('/execute_task', methods=["GET", "POST"])
def execute_task():
print "I'm executing the task"
return "I excecuted the task"
both routes are in the app.yaml file:
- url: /execute_task
script: app.app
login: admin
- url: /task
script: app.app
login: admin
in terminal:
Hi, I'm calling the task INFO 2018-01-28 23:00:49,521 module.py:788] default: "GET /task HTTP/1.1" 200 17
http://localhost:8000/taskqueue
shows:
Queue Name Maximum Rate Bucket Size Oldest Task (UTC) Tasks in Queue
default 5.00/s 5 2018/01/28 22:59:59(0:04:44 ago) 2
回答1:
A print
statement shown to a task is meaningless. You'll never see it. Only the task sees it. Let the task talk to you via the logs.
See if this makes better sense:
from flask import Response
from google.appengine.api import taskqueue
import logging
@app.route('/task', methods=["GET", "POST"])
def testtask():
logging.info("sending task to queue in testtask...")
taskqueue.add(
url = "/execute_task",
name = "task_name_here",
method = "POST",
params = {
"sender": "me"
}
)
return Response("sending task to queue... Check logs", mimetype='text/plain', status=200)
@app.route('/execute_task', methods=["GET", "POST"])
def execute_task():
logging.info("I did the task")
logging.info("params: {}".format(request.form))
return Response("did it. You'll never see this message", mimetype='text/plain', status=200)
来源:https://stackoverflow.com/questions/48492341/simple-google-app-engine-task-queue-tutorial-flask-python-gae