Python 3.x Uvicorn未运行sanic“;在“服务器启动”之前;

Python 3.x Uvicorn未运行sanic“;在“服务器启动”之前;,python-3.x,sanic,uvicorn,Python 3.x,Sanic,Uvicorn,我有一个sanic应用程序,如下所示: from functools import wraps import os from sanic import Sanic from sanic.response import json from es_api.client import ElasticEngine from utils import cleanup app = Sanic(__name__) async def setup_es_client(app, loop):

我有一个sanic应用程序,如下所示:



from functools import wraps
import os

from sanic import Sanic
from sanic.response import json

from es_api.client import ElasticEngine
from utils import cleanup

app = Sanic(__name__)

async def setup_es_client(app, loop):
    app.es_client = ElasticEngine.from_bonsai("xkcd_production", test_instance=False)



@app.route("/", methods=["GET"])
async def home(request):
    return json({"hello": "worldddd"})




@app.route("/all", methods=["GET"])
async def display_all_docs(request):
    results = app.es_client.search_all().results()
    return json(
        {"results": results}
    )



if __name__ == "__main__":
    app.register_listener(setup_es_client,
                          'before_server_start')
    app.run(host="0.0.0.0", port=8000, debug=True, workers=20)

当我运行uvicorn myapp时,它很好地服务于主页:我看到了预期的json

但是当我点击
/all
,它会说

“应用程序没有属性es_客户端”

,这可能表示服务器启动之前的
功能尚未运行

我该如何解决这个问题?我已经查阅了sanic文件,但找不到任何关于这个问题的参考资料

(当我按原样运行应用程序时,它工作正常——即,
python3myapp.py

已修复

移动
app.register\u listener(设置\u es\u客户端、,
“在服务器启动之前”)
以上
if\uuuuuuu name\uuuuuu==“\uuuuuuu main\uuuuu”

更好的是,只需使用sanic的内置装饰器即可实现更好的人体工程学: