169 похожих чатов

Как можно реализовать запуск нескольких потоков с отправкой сообщения? Просто не

понимаю как заставить aiogram работать в нескольких потоках

18 ответов

200 просмотров

Зачем его заставлять работать в нескольких потоках?

loop = asyncio.get_event_loop() loop.create_task(foo()) dp.start_polling()

Ɩı- Автор вопроса
Daniil Kovalenko
Зачем его заставлять работать в нескольких потоках...

У меня есть асинхронная функция для приема сообщений из смс сервиса, вот и нужно работать с несколькими аккаунтами

Ɩı- Автор вопроса
Daniil Kovalenko
А потоки тут при чём?

Для каждого пользователя нужно запускать фоновый процесс получения сообщений

почему хейтите лупы? я проблем еще не получал от них, есть варианты правильнее/лучше?

ོ Макс
почему хейтите лупы? я проблем еще не получал от н...

Просто ради прикола, с asyncio.run тоже такое говно случается

ོ Макс
почему хейтите лупы? я проблем еще не получал от н...

Потому что в актуальных версиях Python 3 появилось более высокоуровневое API для этого, поэтому тянуть loop без причины - плохая практика. asyncio.create_task в твоём случае будет более корректным решением

Ɩı- Автор вопроса
ོ Макс
loop = asyncio.get_event_loop() loop.create_task(f...

Это запустит лишь один раз функцию

Ɩı
Для каждого пользователя нужно запускать фоновый п...

Раз там асинхронная функция, можешь начать с запуска этой задачи в отдельном таске. Как я писал выше, asyncio.create_task. Но в зависимости от того, сколько будет таких задач и что ты там делаешь - это может быть не лучшее решение

Ɩı- Автор вопроса
Daniil Kovalenko
Раз там асинхронная функция, можешь начать с запус...

Я запускаю ее через for цикл с разными аргументами, она запускается только 1 раз, loop.create_task ждёт ее завершения

1. Не loop.create_task, а asyncio.create_task Удали луп у себя отовсюду в коде и забудь про него, пока не будешь писать что-то комплексное или ситуация не потребует явного использования лупа 2. Чтобы не ждать завершения таски, не await её

Ɩı- Автор вопроса
Ɩı- Автор вопроса
Ɩı
Это сработало, спасибо

Но это не работает перед executor

Ɩı
Но это не работает перед executor

async def startup(dp): # запускаем таски executor.start_polling(dp, on_startup=startup)

Похожие вопросы

Обсуждают сегодня

Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
лучше скажите, причём тут паскаль?
Alexey Kulakov
22
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
@PerlBanjoBot use v5.38; sub split_on_cond($arr, $cond) { ($a, $b) = ([], []); push @{ $cond->($_) ? $a : $b }, $_ for @$arr; ($a, $b) } use Data::Dumper; warn Dumpe...
Sergei Zhmylove
10
Всем привет! как узнать, что текст в TSkLabel был выведен сокращенным ? Есть функция для TLabel которая позволяет определить , что текст выведен сокращенным function TFrmMai...
DELPHI SOLUTIONS
6
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Дебил? Я ищу друга
Bitard 228
27
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Карта сайта