我是谷歌应用引擎中的任务队列api新手。我创建了一个新队列,并使用taskqueue.add()函数在其中添加了一个任务。我已经定义了任务的url并写下了url任务的逻辑。但是任务不是异步发生,因为应用程序正在等待任务完成,然后它继续在taskqueue.add()函数之后执行语句。如何使任务异步?对此问题的任何帮助表示赞赏。
代码看起来像这样
class botinitiate(webapp.RequestHandler):
def get(self):
# some more statements here
template_values = {'token': token,
'me': user.user_id()
}
taskqueue.add(url='/autobot', params={'key':game_key},queue_name='autobot')
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
class autobot(webapp.RequestHandler):
def post(self):
# task logic goes here
application = webapp.WSGIApplication([('/botinitiate',botinitiate),('/autobot',autobot)],debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
谢谢
答案 0 :(得分:2)
最近开发的dev_appserver2提供了用户请求和任务队列请求之间的并发性,以便更准确地模拟生产。
答案 1 :(得分:0)
App Engine上的任务队列是异步的;排队任务的请求无法知道任务何时运行(没有进行RPC调用或其他故意的通信)。您可能正在观察的是dev_appserver开发环境的单线程特性;这肯定不会在生产中出现。
答案 2 :(得分:0)
所以你要使用:
add_async(task, transactional=False, rpc=None)
来源:https://developers.google.com/appengine/docs/python/taskqueue/queues
您需要阅读上述网址上的文档并将其应用到您自己的代码中。