HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 21.06.2022, 13:37
pomidorq
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами: 3197792

Репутация: 83
По умолчанию

Добрый день. Имеется вот такой участок кода



Он срабатывает когда на сайте выходит песня. Так вот. Он начинает рассылку на 50 человек, и поток с парсером останавливается в это время.

Как сделать так, чтобы он рассылал в фоне, получая сообщение которое нужно отослать, но продолжал сканировать сайт на наличие новых песен. Просто как правило на этом сайте они выходят пачками, один за одним с маленьким промежутком времени, и есть шанс, что бот пропустит одну из песен во время рассылки.

Я попробовал решить это с помощью функции, и вызывать её в потоке, когда выходит новая песня. Передавать в неё эту песню и сканировать дальше, не стопорясь на рассылке.





У меня ничего не вышло. Этот таск всё равно стопорит поток парсера, Я ЗНАЮ ЧТО АСИНК ЭТО НЕ МНОГОПОТОЧНОСТЬ, И ЧТО ТАК РАБОТАТЬ НЕ ДОЛЖНО ЛЯЛЯЛЯ ИТД ИТП.

Как можно решить эту проблему? Буду очень благодарен за помощь.
 
Ответить с цитированием

  #2  
Старый 21.06.2022, 14:07
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Ну щас кофе заварю карты таро достану отдебажим
 
Ответить с цитированием

  #3  
Старый 21.06.2022, 18:56
munnniisss
Участник форума
Регистрация: 23.12.2019
Сообщений: 155
С нами: 3363619

Репутация: 33
По умолчанию

мог бы предположить создать функция для получения песен сайта, запихнуть её в create_task, а внутри данной функции сделать отправку песни, как у тебя реализована функцией send_music_to_users
 
Ответить с цитированием

  #4  
Старый 21.06.2022, 22:26
laiser
Участник форума
Регистрация: 21.12.2013
Сообщений: 181
С нами: 6522707

Репутация: 83
По умолчанию

Цитата:
Сообщение от Ivan?  

но продолжал сканировать сайт
Где код с парсом сайта?

Я так полагаю, парсишь ты с помощью requests, а она синхронная. Используй другую библиотеку по типу aihttp
 
Ответить с цитированием

  #5  
Старый 21.06.2022, 23:43
pomidorq
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами: 3197792

Репутация: 83
По умолчанию

Цитата:
Сообщение от laiser  

Где код с парсом сайта?
Я так полагаю, парсишь ты с помощью requests, а она синхронная. Используй другую библиотеку по типу aihttp
Да..(( Я сомневаюсь что это решит проблему. Мне нужно очень часто делать запросы к сайту.

и

Цитата:
Сообщение от kin4stat  

Ну щас кофе заварю карты таро достану отдебажим
информативно бро

Цитата:
Сообщение от munnniisss  

мог бы предположить создать функция для получения песен сайта, запихнуть её в create_task, а внутри данной функции сделать отправку песни, как у тебя реализована функцией send_music_to_users
Так проблема в том, что рассылка блочит парсинг сайта. Нужно, чтобы приоритет отправки сообщений снизился
 
Ответить с цитированием

  #6  
Старый 22.06.2022, 00:11
munnniisss
Участник форума
Регистрация: 23.12.2019
Сообщений: 155
С нами: 3363619

Репутация: 33
По умолчанию

Цитата:
Сообщение от Ivan?  

Так проблема в том, что рассылка блочит парсинг сайта. Нужно, чтобы приоритет отправки сообщений снизился
тогда сомневаюсь, что смогу тебе помочь, прости
 
Ответить с цитированием

  #7  
Старый 22.06.2022, 16:02
laiser
Участник форума
Регистрация: 21.12.2013
Сообщений: 181
С нами: 6522707

Репутация: 83
По умолчанию

Цитата:
Сообщение от Ivan?  

Да..(( Я сомневаюсь что это решит проблему. Мне нужно очень часто делать запросы к сайту.
А какая разница с какой переодичностью ты будешь обращаться к сайту?

Твой код, при обращению к сайту брокирует весь сккрипт, так как в requests синхронные функции, time.sleep и т.п., тем самым код с ботом не может работать, пока парсинг не закончится.

Почему я в этом так уверен? Потому-что сам сталкивался с такой-же проблемой.

Одну часть я решил с помощью aiohttp, а другую часть с помощью потоков. (да, потоки в ассинке, но по другому не смог)
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.