Ошибка Python Asyncio: этот цикл событий уже запущен

Я делаю бота Telegram на Python Aiogram. На моем компьютере все работает, но когда я загружаю код на сервер, я получаю сообщение об ошибке. Этот цикл событий уже запущен. Вот часть кода:

      ...
with concurrent.futures.ProcessPoolExecutor(max_workers=COUNT_OF_PROCESSES) as pool_executor:
    db_datas = {key:{"skins": skins, "stickers": stickers, "proxy": proxies_list} for skins, key in zip(skins_arrays, range(COUNT_OF_PROCESSES))}
    results = [pool_executor.submit(posting, db_datas[db_data]) for db_data in db_datas.keys()]
    concurrent.futures.wait(results, return_when=concurrent.futures.FIRST_COMPLETED)
    for f in concurrent.futures.as_completed(results):
        f_success = f.result()
        for _ in concurrent.futures.as_completed(results):
            pool_executor.shutdown(wait=False, cancel_futures=True)

функция размещения:

      ...
while True:
    try:
        print("Posting block")
        if csmoney_profit > 40:
            dp.loop.run_until_complete(bot.send_message(STEAMTRADEBOT_UNLIMITED_ID, parse_message, reply_markup=open_tp))
        elif csmoney_profit > 30:
            dp.loop.run_until_complete(bot.send_message(STEAMTRADEBOT_PREMIUM_ID, parse_message, reply_markup=open_tp))
            dp.loop.run_until_complete(bot.send_message(STEAMTRADEBOT_UNLIMITED_ID, parse_message, reply_markup=open_tp))
        elif csmoney_profit > 15:
            dp.loop.run_until_complete(bot.send_message(STEAMTRADEBOT_VIP_ID, parse_message, reply_markup=open_tp))
            dp.loop.run_until_complete(bot.send_message(STEAMTRADEBOT_PREMIUM_ID, parse_message, reply_markup=open_tp))
            dp.loop.run_until_complete(bot.send_message(STEAMTRADEBOT_UNLIMITED_ID, parse_message, reply_markup=open_tp))
       else:
            dp.loop.run_until_complete(bot.send_message(STEAMTRADEBOT_FREE_ID, parse_message, reply_markup=open_tp))
       break
   except RetryAfter as e:
       print(f"Telegram RetryAfter: {e}")
   except asyncio.TimeoutError as e:
       print(f"Asyncio TimeoutError: {e}")
       break
   except Exception as e:
       print(f"Handlers exception: {e}")
       break

Вот что я вижу в консоли:

      Posting block
Handlers exception: This event loop is already running

Я использую run_until_complete(bot.send_message()) вместо обычного await bot.send_message() потому что этот код работает в синхронной функции, так как я не могу запускать асинхронную функцию в нескольких процессах.

Выслеживать:

      ERROR:aiogram.dispatcher.dispatcher:Cause exception while getting updates.
 Traceback (most recent call last):
   File "/usr/local/lib/python3.9/site-packages/aiogram/dispatcher/dispatcher.py", line 383, in start_polling
     updates = await self.bot.get_updates(
   File "/usr/local/lib/python3.9/site-packages/aiogram/bot/bot.py", line 97, in get_updates
     result = await self.request(api.Methods.GET_UPDATES, payload)
   File "/usr/local/lib/python3.9/site-packages/aiogram/bot/base.py", line 208, in request
     return await api.make_request(self.session, self.server, self.__token, method, data, files,
   File "/usr/local/lib/python3.9/site-packages/aiogram/bot/api.py", line 139, in make_request
     async with session.post(url, data=req, **kwargs) as response:
   File "/usr/local/lib/python3.9/site-packages/aiohttp/client.py", line 1117, in __aenter__
     self._resp = await self._coro
   File "/usr/local/lib/python3.9/site-packages/aiohttp/client.py", line 619, in _request
     break
   File "/usr/local/lib/python3.9/site-packages/aiohttp/helpers.py", line 656, in __exit__
     raise asyncio.TimeoutError from None
 asyncio.exceptions.TimeoutError

0 ответов

Другие вопросы по тегам