@TupaDev

Как раз в 15 минут обновлять значения в бд?

У меня есть БД с платежами. И мне надо раз в 15 раз делать что-то такое -
если колонка COMPLETED == false и колонка CANCELED == false задавать значение колонке CANCELED == true
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
Shurik24
@Shurik24
Обычный программист самоучка
import schedule
import time

schedule.every(15).minutes.do("Имя функции")

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

Если тебе нужно каждые N минут выполнять действие можешь использовать schedule, хочу заметить для работы schudle нужен цикл, чтобы не стопить всю программу можешь подключить много поточность threading и сделать так:

import schedule
import time
from threading import Thread

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

def start():
    schedule.every(5).minutes.do(staff)
    schedule.every(5).minutes.do(getall)
    Thread(target= sch).start()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
Мне кажется ты ошибаешься с логикой и тебе надо не раз в 15 минут это делать, а то что будет если твое событие произойдет за секунду до окончания этого 15-минутного интервала? Т.е. на исполнение задачи (которую ты отменяешь) у тебя будет не 15 минут а секунда.

Если тебе надо отсчитывать некоторое время с момента события, то нужно в базе хранить начало момента времени с которого начинается отсчет, тогда условие окончания интервала будет now-start_time>длительность_интервала, сделай такое поле finished вычисляемым в view или сразу в твоем запросе.

Таких полей можно сделать несколько
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы