Как Вы развертываете задания крона на производстве?

DateTime? - это то же самое, что и Nullable<DateTime>. То есть: экземпляр DateTime? может содержать «NULL», а экземпляр DateTime - нет. (Это верно для всех типов значений, начиная с .NET 2.0. Тип значения не может содержать NULL, но, начиная с .NET 2.0, типы значений, допускающие значение NULL, поддерживаются с помощью конструкции Nullable<T> (или сокращения?).

Вы можете получить значение DateTime? И поместить его в DateTime, выполнив следующее:

DateTime? someNullableDate;
DateTime myDate;

if( someNullableDate.HasValue )
   myDate = someNullableDate.Value;

Другой, более краткий способ получить значение Nullable, это использование оператора слияния нуль:

DateTime myDate = someNullableDate?? default(DateTime);
22
задан zengr 29 October 2012 в 06:03
поделиться

3 ответа

Если вы используете Fabric для развертывания, вы можете добавить функцию, которая редактирует ваш crontab.

def add_cronjob():
    run('crontab -l > /tmp/crondump')             
    run('echo "@daily /path/to/dostuff.sh 2> /dev/null" >> /tmp/crondump')
    run('crontab /tmp/crondump')

Это добавит задание в ваш crontab (отказ от ответственности: полностью непроверенный и не очень идемпотентный).

  1. Сохранить crontab во временный файл.

  2. Добавить строку в файл tmp.

  3. Запишите crontab обратно.

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

21
ответ дан 29 November 2019 в 04:57
поделиться

Вы, вероятно, можете использовать что-то вроде CFEngine / Chef для развертывания (он может развертывать все, включая задания cron)

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

Я использую коммерческий инструмент под названием "UC4". Я не рекомендую это делать, поэтому надеюсь, что вы найдете лучшую программу, которая решит ту же проблему. Я просто говорю, что администрирование заданий не заканчивается, когда вы их развертываете.

1
ответ дан 29 November 2019 в 04:57
поделиться

Если вы используете Django, взгляните на систему заданий из django-command-extensions .

Преимущества в том, что вы можете сохранить свои рабочие места внутри структура вашего проекта с контролем версий, напишите все на Python и настройте crontab только один раз.

0
ответ дан 29 November 2019 в 04:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: