Agora, se você está pensando em usar asyncio.sleep()
em um loop para esperar constantemente por alguma condição externa … não. Enquanto você pode Faça isso, em teoria, é uma maneira desajeitada de lidar com essa situação. Passando um asyncio.Event
Objeto de uma tarefa é uma abordagem melhor, permitindo que você apenas espere pelo Event
Objeta para mudar.
ASYNC e E/S FILE
A E/S de rede no Async pode ser feita para não bloquear, conforme descrito acima. Mas o arquivo de arquivo local bloqueia o thread atual por padrão. Uma solução alternativa é delegar a operação de E/S de arquivo em outro tópico usando asyncio.to_thread()
para que outras tarefas no loop de eventos ainda possam ser processadas.
Outra maneira de lidar aiofiles
biblioteca. Isso oferece construções assíncronas de alto nível para abrir, ler e escrever arquivos-EG, async with aiofiles.open("myfile.txt") as f:
. Se você não se importa de tê -lo como uma dependência em seu projeto, é uma maneira elegante de lidar com esse problema.