我一直在浏览谷歌云 NDB Async 考试教程
https://cloud.google.com/appengine/docs/standard/python/ndb/async
您可以将整个 WSGIApplication 指定为 ndb.toplevel。这确保了每个 WSGIApplication 的处理程序在返回之前等待所有异步请求。(它不会“顶级”所有 WSGIApplication 的处理程序。)
app = ndb.toplevel(webapp2.WSGIApplication([('/', MyRequestHandler)]))
这个相同的功能是否与 Flask 兼容?例如我的代码
app = Flask(__name__)
app.config.update(DEBUG = not SERVER_ISPRODUCTION)
app = ndb.toplevel(app)
...
@app.route('/test')
def testBackfill():
给我错误
Traceback (most recent call last):
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
@app.route('/test')
AttributeError: 'function' object has no attribute 'route'
当我将顶层直接移回请求处理程序时,此错误就会消失。我觉得要么烧瓶无法使用此功能,要么我在使用顶层时做错了什么。我的意图是让我的应用程序中的每个请求处理程序在退出之前等待我的所有异步 Google DataStore 调用完成(我在我的请求处理程序中使用 yield 语句和小任务)。