LINUX.ORG.RU

Как делаются такие вещи?

 , ,


1

1

Делаю сейчас сайт на python/django, в котором пользователи могут создавать определенные события с истекающем сроком давности по времени. При смене статуса нужно рассылать участвующим пользователям email-рассылку о результате. Можно ли это как-то сделать с помощью самой БД(postgres) или потребуется запустить на сервере отдельную программку-демон, которая будет проверять сроки истечения событий, менять их статус и делать рассылку?

★★

запустить на сервере отдельную программку-демон, которая будет проверять сроки истечения событий

cron

Это можно делать в рамках management command на джанге, а не отдельной программкой.

vurdalak ★★★★★
()

Вообще, по памяти, как такое на php варганилось, это выглядит так:
- модуль, который «будет проверять сроки истечения событий, менять их статус и делать рассылку», например, вызывается в том числе с какой-то страницы
- по cron'у запускается cli скрипт, вызывающий тот же модуль.

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

Фу фу. Так можно завести демона и пинками заставлять его пересчитывать время ближайшего события и что-нибудь делать (при обновлении таблицы этих событий, напирмер).

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

Ну, я имел ввиду, что с какой-то страницы он выполняет свои задачи осмысленно, по нажатию на какую-либо кнопку или при каком-либо действии юзера.

Shadow ★★★★★
()
Ответ на: комментарий от melkor217

Предлагаю отказаться от демона, переписать всё на php, и пусть пользователь тренирует мозг - высчитывает время сам. Оставить только кнопку Удалить событие.

menangen ★★★★★
()

О, можно пихать джобы в at, заодно дедов порадуешь.

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

Ну разницы никакой, ну fork() на один меньше будет, зато всё сильно упрощается - никаких инитов, никаких вотчдогов...

Shadow ★★★★★
()
Ответ на: комментарий от lampslave

Единственный нормальный совет.

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

vertinsky
()
Ответ на: комментарий от melkor217

тэги: postgres, python, нуб

Хм... а где тут php? Я предлагал сделать job который раз в час/день/год будет проверять, не истекло ли время жизни событий. И, если истекло, то выполнять какие-либо действия

trofk ★★★
()

Отдельно делается. Вот этим: Django-RQ. Нужно редис

Поскольку ты знаешь когда тебе нужно будет это делать, один срок истечения = один job

anonymous
()
Ответ на: комментарий от trofk

Ну пейтон, похопе, какая разница-то? Всё равно этот вариант не менее убогий, чем проверять периодически при загрузке страниц. Потому что он тоже не гарантирует, что эвент обработается вовремя.

melkor217 ★★★★★
()

я смотрю тут элита собралась. Правильное решение: celery + celerybeat

alfss
()

Раньше в оракле можно было просто открыть сокет из хранимки, ЕМНИП в постгре тоже такое было.

ya-betmen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.