Запуск функции каждые 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()