24
Май
2022

Ошибка Broken pipe в PyMySql

Всем привет! Столкнулся с проблемой с pymysql. У меня есть функция для считывания определенных данных по REST-API и после записи их в БД, и это нужно выполнять по определенному расписанию. Я использую для запуска кода по расписанию такую штуку:

import schedule

def job():
    # Тут функция, которая будет выполняться по расписанию

schedule.every().day.at("09:00").do(job) #Каждый день в 09:00 запускать job()

while True:
    schedule.run_pending()
    time.sleep(1)

Проблема как я понял в pymysql, который видимо за время ожидания теряет коннект с сервером. Подключение pymysql у меня в отдельном файле, код такой (заменил данные на #):

import pymysql

connection = pymysql.connect(host='###.###.###.###',
                             user='####',
                             password='########',
                             database='####',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

Залил на сервер и открыл с помощью утилиты Screen сессию, в которой запустил мой файл с функцией

В 09:00 срабатывает, но пишет ошибку "broken pipe", которая вроде означает, что время сессии истекло. Можно как-то убрать ограничение на время сессии или заставить pymysql переподключаться к серверу в случае ошибки, которую можно отловить try/except? Или просто выполнять pymysql.connect непосредственно в job()?

Источник: https://ru.stackoverflow.com/questions/1413284/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-broken-pipe-%D0%B2-pymysql

Тебе может это понравится...

Добавить комментарий