Планирование работы cron
Я хочу разработать приложение, в котором пользователь может регистрироваться для оповещений (нескольких), чтобы каждый раз, когда стоимость билета опускалась ниже определенного порога, он получал уведомление. Тарифы извлекаются со стороннего веб-сайта. Я хочу сделать это на Google App-Engine.
Теперь, насколько я понимаю, мне нужен процесс, работающий 24/7, который проверяет тарифы, скажем, с интервалом в 30 минут и отправляет уведомление всякий раз, когда он достигает порогового значения. Возможно, для этой задачи можно использовать работу cron в app-engine? Но при максимальных 100 крон работах может быть запланировано, что будет лучшим способом для этого. Кроме того, наличие процесса для каждого пользователя будет пустой тратой ресурсов, что будет лучшим алгоритмом планирования для более высокой эффективности?
1 ответ
Вы хотите запланировать один хрон, который запускается каждые 30 минут и выбрасывает элемент в очередь задач. Этот единственный элемент в очереди задач сможет затем пройти через всех ваших пользователей и сгенерировать задачи для повторной загрузки всего, что вам нужно, в фоновом режиме. Две важные вещи:
- Вы хотите, чтобы начальный вызов cron возвращался как можно быстрее, поскольку URL-адреса имеют 60-секундный срок.
- Разделите любую работу на отдельные очереди задач, чтобы достичь вышеупомянутых целей, а также переберите источники данных и / или пользователей.
Исходя из того, что вы объясняете, вы можете использовать очереди задач push: https://cloud.google.com/appengine/docs/python/taskqueue/overview-push