Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 17, 2022 21:00:34

vortex604
Зарегистрирован: 2022-11-10
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

На коленке написан бот, который парсит сайт и каждые 30 минут публикует пост в телеграмм канале.
Настроен ноутбук, который не засыпает и работает 24\7 аля Windows сервер.

Кейс:
В 23.00 вечера я запускаю бот Bot.py
Висит “черное окно”. Бот работает - новости публикуются.
С утра в 7.00 черного окна нет. Хотя все остальные программы работают.

Получается ночью, когда я сплю сладким сном, скрипт падает или винда его срубает.

Вопрос: как заставить бот работать “вечно”?

Офлайн

#2 Ноя. 17, 2022 23:48:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

vortex604
На коленке написан бот, который парсит сайт и каждые 30 минут публикует пост в телеграмм канале.
Добавь в этот скрипт журналирование (логирование) и после каждой успешной операции добавляй запись в лог в формате <дата><время><выполненная операция>. Если же происходит сбой, также в лог добавляй запись <дата><время><невыполненная операция><причина> . Так ты узнаешь, когда программа завершила выполнение.



Отредактировано py.user.next (Ноя. 17, 2022 23:50:08)

Офлайн

#3 Ноя. 18, 2022 12:37:32

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

Кроме того оберни блок парсинга сайта и блок отправки сообщений в
try/except - даже если произойжет ошибка программу не выбросит и напишет тебе лог
Далее нужно проанализировать данные лога, найти и устранить причину падения



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#4 Ноя. 18, 2022 13:25:13

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

можно кхм кхм еще запилить проверку работы скрита типа ежеле нет то kill его (на всякий случай) и и потом запуск ну это при условии что это ос не причем а возникает ошибка в работе етого бот.пи



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#5 Ноя. 18, 2022 20:35:15

vortex604
Зарегистрирован: 2022-11-10
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

Можете помочь с кодом?
Попробовал добавить loguru, но файл все время пустой

 import telebot
import requests
import time
import fake_useragent
from loguru import logger
logger.add("runtime.log")
from bs4 import BeautifulSoup
token = ""
channel_id = "@"
bot = telebot.TeleBot(token)
@logger.catch
@bot.message_handler(content_types=['text'])
def commands(message):
    #bot.send_message(channel_id, message.text)
    if message.text == "Старт":
        #bot.send_message(channel_id, "Hello")
        back_post_id = None
        while True:
            post_text = parser(back_post_id)
            back_post_id = post_text[1]
            if post_text[0] != None:
                bot.send_message(channel_id, post_text[0])
                time.sleep(1800)
    else:
        bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши Старт")
@logger.catch
def parser(back_post_id):
    URL = ""
    user = fake_useragent.UserAgent().random
    header = {'user-agent': user}
    page = requests.get(URL, headers=header)
    soup = BeautifulSoup(page.content, "html.parser")
    post = soup.find('section', class_='post-content', id=True)
    post_id = post["id"]
    
    if post_id != back_post_id:
        title = post.find('h2').text
        description = post.find('p').text
        link = post.find('a')
        url = link.attrs['href']
        
        return f"{title}\n\n{description}\n\n{url}", post_id
    else:
        return None, post_id
bot.polling()

Отредактировано vortex604 (Ноя. 19, 2022 07:23:45)

Офлайн

#6 Ноя. 18, 2022 21:17:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

vortex604
Попробовал добавить loguru, но файл все время пустой
Добавь сообщения, которые выводятся в журнал. Например, у тебя получилось подключиться и скачать данные - запиши это в журнал. Потом у тебя получилось разобрать данные - запиши это в журнал.

На первой странице есть примеры того, как выводить сообщения в журнал
https://loguru.readthedocs.io/en/stable/index.html
https://loguru.readthedocs.io/en/stable/overview.html#take-the-tour



Офлайн

#7 Ноя. 19, 2022 13:41:44

vortex604
Зарегистрирован: 2022-11-10
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

Получилось отловить такое:
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.bigsquidrc.com', port=443): Max retries exceeded with url: /category/news/new-products/ (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000001F74E00E220>: Failed to establish a new connection: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера'))

Это сайт не доступен? Он понимает что его парсят и защиту включает?

Офлайн

#8 Ноя. 19, 2022 18:45:31

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

vortex604
Он понимает
ммм оно те место (site) это оно



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#9 Ноя. 19, 2022 23:58:50

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

vortex604
Это сайт не доступен? Он понимает что его парсят и защиту включает?
Убедись сначала, что у тебя с интернетом всё в порядке. Запусти какой-нибудь скрипт параллельно с этим скриптом, чтобы он обращался к другому сайту таким же образом. И поставь логирование для каждой операции, которое пишет в файл на диске.

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



Отредактировано py.user.next (Ноя. 19, 2022 23:59:46)

Офлайн

#10 Ноя. 20, 2022 17:57:51

vortex604
Зарегистрирован: 2022-11-10
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Падает выполнение скрипта на Windows

Почему не сработала такая конструкция?
Опять словил ошибку (в pycharm она показывается), а в логе не отразилось…

     while True:
        try:
            page = requests.get(URL, headers=header)
            break
        except TimeoutError:
            logging.info("Нет коннекта")

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version