Рассылка сообщений aiogram
Необходимо организовать рассылку сообщений tg. Задача в том, чтобы все пользователи получили сообщение одновременно. То есть просто await тут не подходит, да и создание task не особо. Необходимо вынести отправку сообщения в отдельный поток. Пытался вот так, но возникает ошибка
defs = [
(bot.forward_message, (user_id, event.chat_id, event.message.id), {}),
(bot.send_message, (user_id, post_text), {'parse_mode': ParseMode.HTML})
]
thr = threading.Thread(target=functions.between_callback,
args=[functions.async_functions_complet, *defs])
thr.start()
async def async_functions_complete(functions, *args, **kwargs):
for fun, args, kwargs in functions:
try:
await fun(*args, **kwargs)
except Exception as ex:
logging.exception(ex)
def between_callback(fun, *args):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(fun(args))
loop.close()
Ошибка такая:
Traceback (most recent call last):
File "C:\Users\ebeda\PycharmProjects\jew_bot_2\bot\functions.py", line 55, in async_functions_complete
await fun(*args, **kwargs)
File "C:\Users\ebeda\PycharmProjects\jew_bot_2\venv\lib\site-packages\aiogram\bot\bot.py", line 327, in send_message
result = await self.request(api.Methods.SEND_MESSAGE, payload)
File "C:\Users\ebeda\PycharmProjects\jew_bot_2\venv\lib\site-packages\aiogram\bot\base.py", line 226, in request
return await api.make_request(await self.get_session(), self.server, self.__token, method, data, files,
File "C:\Users\ebeda\PycharmProjects\jew_bot_2\venv\lib\site-packages\aiogram\bot\api.py", line 139, in make_request
async with session.post(url, data=req, **kwargs) as response:
File "C:\Users\ebeda\PycharmProjects\jew_bot_2\venv\lib\site-packages\aiohttp\client.py", line 1140, in __aenter__
self._resp = await self._coro
File "C:\Users\ebeda\PycharmProjects\jew_bot_2\venv\lib\site-packages\aiohttp\client.py", line 466, in _request
with timer:
File "C:\Users\ebeda\PycharmProjects\jew_bot_2\venv\lib\site-packages\aiohttp\helpers.py", line 698, in __enter__
raise RuntimeError(
RuntimeError: Timeout context manager should be used inside a task