Телемарафон отправляет сообщения в списке асинхронным способом

0

Вопрос

Извините за любой ломаный английский...

Итак, в принципе, у меня есть список, содержащий сообщения и их судьбы:

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

Что я хочу, так это использовать: async for msg in messages однако мой список, очевидно, не является асинхронно повторяемым (я использую sqlite3) как я могу преобразовать его в асинхронно повторяемый список?

1

Лучший ответ

0

Вам не нужны "асинхронно повторяющиеся списки". Вы можете просто выполнить обычную итерацию:

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

Если вам действительно нужен "асинхронный итерируемый список", вы можете обернуть его так, однако обратите внимание, что это, вероятно, очень необязательно (и для этого также требуется последняя версия 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 - Спасибо! 2 - Я использую: @client.on(events.NewMessage) таким образом, я могу отправлять и получать сообщения одновременно, но я пытаюсь сделать так, чтобы они не блокировали друг друга, чтобы все это не перестало работать. 3 - Я думаю, что я лучше рассмотрю примеры.
Joao Pedro Lourenco Affonso

По умолчанию новый asyncio задача создается для каждого обновления, поэтому они не будут блокировать друг друга. Проблема возникает только в том случае, если вы используете методы блокировки (например time.sleep вместо asyncio.sleep).
Lonami

Ах, большое вам спасибо! В итоге я решил проблему, как вы предлагали ранее, но это все равно полезно!
Joao Pedro Lourenco Affonso

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................