Пишу бота для телеграм (telebot), проблема с асинхронными функциями. В чем причина ошибки?
1. await так не пишется.
x = await asyncio.create_task(startq(message))
2. Зачем ты делаешь await?
asyncio.create_task() создаёт корутину, которая будет выполняться конкуррентно с текущей (как бы параллельно)
await приостанавливает выполнение текущей корутины, пока не завершится вызываемая (справа от await).
Т.е. await create_task(...) - это не очень осмысленно: сначала запускаешь параллельную корутину, а потом всё равно стоишь и ждёшь её.
Если тебе нужно запустить корутину startq() и дождаться её выполнения (ну и получить возвращаемое значение) - пиши просто x = await startq(message)
Если тебе нужно запустить корутину startq() и пусть она дальше выполняется сама по себе, тебе от неё ничего не надо - достаточно будет asyncio.create_task(startq(message))
1. await так не пишется.
x = await asyncio.create_task(startq(message))
2. Зачем ты делаешь await?
asyncio.create_task() создаёт корутину, которая будет выполняться конкуррентно с текущей (как бы параллельно)
await приостанавливает выполнение текущей корутины, пока не завершится вызываемая (справа от await).
Т.е. await create_task(...) - это не очень осмысленно: сначала запускаешь параллельную корутину, а потом всё равно стоишь и ждёшь её.
Если тебе нужно запустить корутину startq() и дождаться её выполнения (ну и получить возвращаемое значение) - пиши просто x = await startq(message)
Если тебе нужно запустить корутину startq() и пусть она дальше выполняется сама по себе, тебе от неё ничего не надо - достаточно будет asyncio.create_task(startq(message))