Как мне запланировать одноразовые задания из приложения Perl CGI?

Я пишу приложение, позволяющее пользователям планировать разовые долгосрочные задачи из веб-приложения (Linux/Apache/CGI::Application). Для этого я использую модуль Schedule::At, который является интерфейсом Perl для команды "at". Поскольку запланированные задания не повторяются, я не рассматриваю "cron". У меня есть две проблемы с "в", хотя:

  1. Планирование работает хорошо, когда мое CGI-приложение запускается в оболочке suexec, но не по расписанию владельцем процесса Apache. Как настроить расписание для работы в обеих средах (suexec и no-suexec)?
  2. Похоже, что процессы, запланированные с помощью "at" или Schedule::At, не имеют отчетов об ошибках, и я иногда обнаруживаю, что запланированные задачи завершаются сбоем молча. Есть ли способ зарегистрировать тот факт, что запланированное задание (не сам планировщик) не удалось запустить?

Я не зациклен на "at" и могу использовать другие, более надежные методы планирования, если они есть.

Спасибо за Ваше внимание.

1 ответ

Решение

Я слышал хорошие вещи о Шварце. Это не имеет задержки до тех пор, пока; вы бы отправляли задания через at, но это должно решить обе проблемы, перечисленные выше, если ваш скрипт submit_job был прост.

(В качестве предостережения я использовал только Gearman, я думаю, что для этого вам понадобится надежная очередь заданий, механизм "запускай и забывай", так что вы можете сохранить свой submit_job немым.)

Другие вопросы по тегам