Maratona enviar mensagens na lista de forma assíncrona

0

Pergunta

Desculpe por qualquer inglês quebrado...

Então, basicamente, eu tenho uma lista que contém as mensagens e seus destinos:

messages = [(id_1, msg_1), (id_2, msg_2), (id_3, msg_3),]

O que eu quero é usar um: async for msg in messages no entanto, a minha lista, obviamente, não é de forma assíncrona iterable (estou usando o sqlite3) como posso convertê-la de uma forma assíncrona iterable lista?

1

Melhor resposta

0

Você não precisa "de forma assíncrona iterable listas". Você pode simplesmente iterar normalmente:

for (id, msg) in messages:
    # do things...

Se você realmente precisa de um "async iterable lista", você pode quebrar-lo assim, no entanto, note que este é, provavelmente, muito desnecessário (e ele também requer um recente versão do Python):

async def make_async_iter(lst):
    for item in lst:
        yield item

...

async for item in make_async_list(messages):
    # use item...
2021-11-23 18:48:47

1 - Obrigado! 2 - estou usando um: @client.on(events.NewMessage) para que eu possa enviar e receber mensagens ao mesmo tempo, mas eu estou tentando fazer com que elas não estão bloqueando o outro, então a coisa toda não parar de trabalhar. 3 - acho que vou dar uma olhada melhor em exemplos.
Joao Pedro Lourenco Affonso

Por padrão, um novo asyncio a tarefa é gerado para cada atualização, de modo que não costuma bloquear uns aos outros. O único problema ocorre se você usar o bloqueio de métodos (como time.sleep em vez de asyncio.sleep).
Lonami

Ahh, muito obrigado! Acabei de resolver o problema como sugerido anteriormente, mas ainda útil!
Joao Pedro Lourenco Affonso

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................