Таким образом, я пытаюсь использовать Sanic для некоторых асинхронных веб-запросов, поскольку у меня есть некоторые специальные, которые возвращаются назад за несколько секунд, но в то же время хотят выполнять другие запросы от клиента. Вот пример метода, который, похоже, по-прежнему блокирует другие вызовы от клиента, ожидая возвращения lib.getAlarmState (). (lib.getAlartmState () - это вызов библиотеки C с использованием pythons ctypes, который возвращает около 3 секунд и возвращает тип Int.)
Согласно тому, что я вижу в документации для sanic, простое определение метода как async должно делать то, что я ищу? Я попытался добавить await перед lib.getAlarmState (), но я не уверен, что я использую это совершенно правильно.
@app.route('/processjson')
async def processjson(request):
vals = lib.getAlarmState()
return response.json({"alarm:" : vals})
Я ожидаю, что пока показанный метод не работает, я должен иметь возможность вызывать другие методы от клиента и получать ответы.