Запуск функции каждые 5 минут в потоке

Помогите запустить функцию отдельно от кода, и чтоб она повторялась каждые 5 минут. Сейчас она запускается только в начале кода. Пробовал time.sleep, но выдает ошибку

def ping_complexes(row_size):
    try:
        records = Mangustes.query.limit(row_size).all()
        for record in records:
            if ping(record.ip) in (None, False):
                record.Status = 2
            else:
                record.Status = 1
        db.session.commit()
    except Exception as e:
        print("???", e)

И дополнительно, помогите выдернуть из функции переменную row_size, чтобы запускать функцию через ping_complexes(row-size). Сейчас запускаю указывая количество строк в таблице - ping_complexes(19)

Весь код main.py

from flask import Flask, render_template, url_for, flash, request, redirect
from ping3 import ping
from flask_sqlalchemy import SQLAlchemy
from threading import Thread
from time import sleep
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mangust.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
       
class Mangustes(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    address = db.Column(db.Text, nullable=False)
    ip = db.Column(db.Text, nullable=False)
    serialNumber = db.Column(db.Text, nullable=False, primary_key=True)
    Status = db.Column(db.Integer)

    def __repr__(self):
        return '<Mangustes %r>' % self.id                        

@app.route('/', methods=["POST", "GET"])
def index():
    mangustes = Mangustes.query.order_by(Mangustes.id).all()
    return render_template("index.html", mangustes=mangustes)

@app.route('/adding', methods=["POST", "GET"])
def adding():
    if request.method =="POST":
        ip = request.form['ip']
        address = request.form['address']
        serialNumber = request.form['serialNumber']
        complex = Mangustes(ip=ip, address=address, serialNumber=serialNumber)
        try:
            db.session.add(complex)
            db.session.commit()
            return redirect('/')
        except:
            return "При добавлении комплекса произошла ошибка"
    else:
        return render_template("adding.html")
    
def ping_complexes(row_size):
    try:
        records = Mangustes.query.limit(row_size).all()
        for record in records:
            sleep(20)
            if ping(record.ip) in (None, False):
                record.Status = 2
            else:
                record.Status = 1
        db.session.commit()
    except Exception as e:
        print("???", e)
 ping_complexes(19)
            
if __name__ == "__main__":
    app.run(debug=False, host='0.0.0.0', port=8080)
    thread = Thread(target=ping_complexes(19), args=[])
    thread.start()
    thread.join()

Ответы (0 шт):