Python Asyncio. Скрипт перестаёт выполняться, но не падает с ошибкой
Есть асинхронный скрипт, который должен выполняться пока его не остановят руками.
if __name__ == '__main__':
cache_send_data = {}
while True:
try:
last_data = asyncio.get_event_loop().run_until_complete(main(cache_send_data))
cache_send_data = last_data
time.sleep(2)
except Exception as ex:
print(ex)
Внутри скрипта есть создание и обработка тасков, отправка данных на сервер:
for id in value:
t = asyncio.create_task(fnc[key](id))
tasks.append(t)
result = await asyncio.gather(*tasks)
while status != 'Ok':
async with websockets.connect("адрес_сервера") as websocket:
await websocket.send(json.dumps(send_data))
message = await websocket.recv()
status = json.loads(message).get('Status')
Спустя 3-6 часов скрипт перестаёт отправлять данные на сервер, но при этом не выдаёт никакую ошибку. По сути зависает. Перезапускаешь скрипт и он продолжает работу.
Если поменять get_event_loop().run_until_complete
на run()
:
Task <Task pending name='Task-2' coro=<######e() running at #####.py:172> cb=[gather.._done_callback() at C:\Python311\Lib\asyncio\tasks.py:754]> got Future <Future pending cb=[_chain_future.._call_check_cancel() at C:\Python311\Lib\asyncio\futures.py:387]> attached to a different loop
Подскажите пожалуйста в какую сторону копать и на что обратить внимание.