es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Telethon envía mensajes en una lista de manera asíncrona.

Lo siento por cualquier error en inglés…

Básicamente, tengo una lista que contiene mensajes y sus destinos:

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

Lo que quiero es usar un bucle asíncrono: async for msg in messages, sin embargo, mi lista, obviamente, no es iterable de forma asíncrona (estoy usando sqlite3), ¿cómo puedo convertirla en una lista iterable de forma asíncrona?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una solución sería crear una función generadora asíncrona que entregue cada mensaje en la lista. Aquí les mostramos un ejemplo de implementación:

    async def async_messages(messages):
        for message in messages:
            yield message
    

    Luego, puede usar esta función generadora asíncrona en su código de la siguiente manera:

    async for id, msg in async_messages(messages):
        # hacer algo con el mensaje y su identificación
    

    Alternativamente, si está utilizando Python 3.6 o posterior, también puede usar una comprensión de lista asíncrona para crear una lista asíncrona:

    async_messages = [message async for message in messages]
    

    De cualquier manera, puede usar la lista o la función generadora asíncrona resultante en su código asíncrono.

Comments are closed.