Size: a a a

2020 September 04

m

mr.slavik in MediaTube HCF
про потоки
источник

AO

Andrew Onfire in MediaTube HCF
вернее даже хочется
выделить асинхронную задачу
под эту загрузку
источник

M

Morty in MediaTube HCF
Антон
Кринж
+
источник

m

mr.slavik in MediaTube HCF
Andrew Onfire
вернее даже хочется
выделить асинхронную задачу
под эту загрузку
у асинкио есть один нюанс
источник

AO

Andrew Onfire in MediaTube HCF
mr.slavik
у асинкио есть один нюанс
?
источник

m

mr.slavik in MediaTube HCF
чтобы он работал - управление должно регулярно передаваться планировщику в корутинах
источник

m

mr.slavik in MediaTube HCF
если в корутине будет вызвана синхронная функция - например работы с файловой системой
источник

m

mr.slavik in MediaTube HCF
работа планировщика будет заблокирована
источник

m

mr.slavik in MediaTube HCF
class ProcessMessage(Thread):
   def __init__(self, name, message):
       Thread.__init__(self)
       self.name = name
       self.message = message

   def run(self):
       with suppress(Exception):
           process_message(self.message)
           msg = "%s is running" % self.name
           print(msg)
источник

AO

Andrew Onfire in MediaTube HCF
есть же асинхронные функции для ФС
источник

m

mr.slavik in MediaTube HCF
@bot.message_handler(content_types=['text', 'document', 'audio', 'video', 'voice'])
def create_threads(message):
   with suppress(Exception):
       name = "Thread #%s" % message.message_id
       my_thread = ProcessMessage(name, message)
       my_thread.start()
источник

НП

Нехристь Пендостанск... in MediaTube HCF
У нас в 2024
источник

m

mr.slavik in MediaTube HCF
mr.slavik
class ProcessMessage(Thread):
   def __init__(self, name, message):
       Thread.__init__(self)
       self.name = name
       self.message = message

   def run(self):
       with suppress(Exception):
           process_message(self.message)
           msg = "%s is running" % self.name
           print(msg)
если вкратце - как у меня бот работает
источник

m

mr.slavik in MediaTube HCF
объект bot крутит внутри себя поллингом
источник

m

mr.slavik in MediaTube HCF
получает апдейты от телеги
и раскидывает эти апдейты по соответствующим декораторам
в одном потоке
источник

m

mr.slavik in MediaTube HCF
затем в хендлере создается на каждый апдейт новый поток, в который передается сообщение
источник

m

mr.slavik in MediaTube HCF
и дальше уже сообщение в своем потоке обрабатывается, а бот дальше разгребает апдейты
источник

m

mr.slavik in MediaTube HCF
ну это на самом деле не очень прям красиво - по хорошему надо пул тредов было бы создать и раскидывать по ним таски, но впадлу
источник

m

mr.slavik in MediaTube HCF
это наверное самое близкое что могу подсказать, но вангую что может долго загружаться файл в одном потоке
источник

AO

Andrew Onfire in MediaTube HCF
да, спасибо
источник