You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Возможна ситуация, когда после отправки direct notification на backend, callback на действие уже пришел на fastapi, но управление ещё не вернулось в корутину ожидания callback'a. Из-за этого в memory_repo ещё не хранится соответствующий sync_id. Это приводит к тому, что callback ещё не ожидается, но ответ на него уже пришёл.
Такая ситуация может наступить, если event loop перегружен или в него затесалась CPU-bounded задача.
async def heavy_task():
time.sleep(0.5) # Симуляция работы через заморозку потока
await asyncio.sleep(0.5) # Передача управления в event loop с последующим возвращением
await asyncio.sleep(0.2) # И ещё разок
async def test_race():
coro_list = [heavy_task() in range(20)]
coro_list.append(bot.send_message(bot_id=some_bot_id, chat_id=some_chat_id, body='some text'))
await asyncio.gather(*coro_list)
Индикатором проблемы будет следующая последовательность ошибок в логе:
pybotx.bot.exceptions.BotXMethodCallbackNotFoundError: Callback ccbf5a16-fb25-5589-85a5-3cce9a58356c doesn't exist or already waited or timed out
pybotx.client.exceptions.callbacks.CallbackNotReceivedError: Callback for sync_id ccbf5a16-fb25-5589-85a5-3cce9a58356c hasn't been received
The text was updated successfully, but these errors were encountered:
Возможна ситуация, когда после отправки direct notification на backend, callback на действие уже пришел на fastapi, но управление ещё не вернулось в корутину ожидания callback'a. Из-за этого в memory_repo ещё не хранится соответствующий sync_id. Это приводит к тому, что callback ещё не ожидается, но ответ на него уже пришёл.
Такая ситуация может наступить, если event loop перегружен или в него затесалась CPU-bounded задача.
Индикатором проблемы будет следующая последовательность ошибок в логе:
The text was updated successfully, but these errors were encountered: