#python #asynchronous #request #synchronization #quart
#python #асинхронный #запрос #синхронизация #кварта
Вопрос:
У меня есть асинхронный маршрут в кварте, в котором я должен запустить синхронный блок кода. Согласно документации, я должен использовать run_sync из quart.utils, чтобы гарантировать, что синхронная функция не блокирует цикл событий.
def sync_processor():
request = requests.get('https://api.github.com/events')
return request
@app.route('/')
async def test():
result = run_sync(sync_processor)
print(result)
return "test"
Однако print(результат) возвращает <функция sync_processor в 0x742d18a0> . Как я могу получить объект запроса вместо <функция sync_processor в 0x742d18a0> .
Ответ №1:
Вам не хватает await
as run_sync
, который обертывает функцию сопрограммной функцией, которую вам затем нужно вызвать, т.Е. result = await run_sync(sync_processor)()
Или полностью,
def sync_processor():
request = requests.get('https://api.github.com/events')
return request
@app.route('/')
async def test():
result = await run_sync(sync_processor)()
print(result)
return "test"