Необходимо отправлять пользователям напоминания, пользователь сам выбирает дату и время, так же он может удалить напоминание. Я вынес логику проверки в отдельный поток, где в бесконечном цикле каждую секунду производится проверка. Запускается этот поток при обращении к определенной странице.
def check_reminders():
while True:
# Берем самое ближайшее напоминание и сравниваем с текущим временем,
# если равны, отправляем напоминание пользователю
time.sleep(1)
def run_thread(request):
# Проверяем не запущен ли уже поток с проверкой напоминаний
for thread in threading.enumerate():
if thread.name == 'reminders_thread':
return
t1 = threading.Thread(target=check_reminders, name='reminders_thread')
t1.start()
Но такое решение однозначно костыльное и пригодно только для очень малого числа пользователей. Погуглив, нашел сервис celery, но не уверен, подходит ли он для моей задачи? Так же не знаю возможно ли его развернуть на heroku?