因此,我尝试使用 Sanic 来处理一些异步 Web 请求,因为我有一些特殊的请求需要几秒钟才能返回,但同时希望从客户端执行其他请求。这是一个示例方法,它在等待 lib.getAlarmState() 返回时似乎仍在阻止来自客户端的其他调用。(lib.getAlartmState() 是使用 pythons ctypes 调用 C 库,需要大约 3 秒才能返回并返回 Int 类型。)
根据我在 sanic 文档中看到的内容,只需将方法定义为 async 就可以满足我的要求吗?我试过在 lib.getAlarmState() 前面添加一个等待,但我不确定我使用的是否正确。
@app.route('/processjson')
async def processjson(request):
vals = lib.getAlarmState()
return response.json({"alarm:" : vals})
我希望在显示的方法停止运行时,我应该能够从客户端调用其他方法并获得响应。