0

Я хотел бы написать сценарий, который планирует различные вещи в течение дня. к сожалению, он будет выполнять> 100 различных задач в день, ближе к 500 и может быть до 10 000 в будущем.как вы создаете скрипт cron?

Все задачи независимы в том, что вы можете думать о моем сценарии как услуге для конечных пользователей, которые подписываются и хотят, чтобы я планировал задачу для них. так что если 5 ppl подписываются и человек A хочет, чтобы я отправил им электронное письмо в 9 утра, это будет отличаться от человека B, который может потребовать, чтобы я запросил api в 22:30 и т. д.

сейчас, концептуально I планируете иметь базу данных, которая расскажет мне, что будет делать каждый человек, и в какое время они просят запланировать эту задачу и частоту. раз в день я получу эти данные из своей базы данных, поэтому у меня есть последняя запись всех задач, которые должны быть выполнены в день

Выполнение их через цикл Я могу создавать каналы, которые могут выполнять таймеры или тикеры для каждой задачи.

Вопрос, который у меня есть, заключается в том, как это можно развернуть на производстве, например, в google-приложении? поскольку эти платформы предназначены для веб-серверов, я не уверен, как это будет работать ... Или я должен использовать Google Compute Engine и заставить его действовать в качестве вычисления в течение 24 часов? Может ли Google вычислить движок даже сделать http-звонки?

также, если я должен сказать, что 500 каналов открыты 24 часа в сутки, составляет ли это 500 контейнеров в Google приложении? Я полагаю, что это будет очень дорогостоящим, несмотря на то, что это по сути очень дешевый продукт.

так снова вопрос возвращается к тому, как cron-скрипт развертывается на производстве?

любой помощи или руководства будет очень цениться как я сделал много прибегая к помощи и, к сожалению, все, что ведет обратно к хронам планировщику, который имеет ограничение в 100 задач в Google App Engine ...

ответ

1

Подробных информации о хронах на GAE можно найти here.

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

Однако можно просто запустить общее задание cron (например, один раз в минуту) и обработать обработчик заданий для пользовательских конфигураций заданий пользователя и, соответственно, сгенерировать задачи для их обработки. Запуск задач ~ 10K в день обычно не является проблемой, они могут даже вписаться в бесплатные квоты приложений (в зависимости от того, что на самом деле выполняются задачи).

Такая же техника может быть применена к обычной ОС Linux (в том числе на GCE VM). Я еще не использовал GCE, поэтому я не могу точно сказать, может ли/как будет динамически обновляться cron с ним.

+0

Почему не очереди задач? –

+1

@ZigMandel: Да, очереди задач - это то место, где я мог бы представить задачи, сгенерированные общим заданием cron. Использование отложенных задач также будет возможностью. –

0

Вам нужно только одно рабочее задание cron для ваших требований. Это задание cron может выполняться каждые 30 минут - или один раз в день. Он увидит, что должно быть сделано в течение следующего периода времени, создайте задачи для этого и добавьте эти задачи в очередь.

Это может быть сделано одним экземпляром App Engine. Количество экземпляров, необходимых для выполнения ваших задач, зависит, конечно, от того, как долго выполняется каждая задача. У вас есть большой контроль над запуском очереди задач.

Смежные вопросы