Ошибка 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