ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Как распараллелить рассылку сообщений и цикл [aiogram] (https://forum.antichat.xyz/showthread.php?t=1437484)

pomidorq 21.06.2022 13:37

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

https://forum.antichat.xyz/attachmen...fbad35bd5f.png

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

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

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

https://forum.antichat.xyz/attachmen...aec38303ab.png

https://forum.antichat.xyz/attachmen...c9c4020dfe.png

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

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

kin4stat 21.06.2022 14:07

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

munnniisss 21.06.2022 18:56

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

laiser 21.06.2022 22:26

Цитата:

Сообщение от Ivan?

но продолжал сканировать сайт

Где код с парсом сайта?

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

pomidorq 21.06.2022 23:43

Цитата:

Сообщение от laiser

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

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

и

Цитата:

Сообщение от kin4stat

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

информативно бро

Цитата:

Сообщение от munnniisss

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

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

munnniisss 22.06.2022 00:11

Цитата:

Сообщение от Ivan?

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

тогда сомневаюсь, что смогу тебе помочь, прости

laiser 22.06.2022 16:02

Цитата:

Сообщение от Ivan?

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

А какая разница с какой переодичностью ты будешь обращаться к сайту?

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

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

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


Время: 01:58