Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I schedule one-time tasks from a Perl CGI application?

I am writing an application to allow users to schedule one-time long-running tasks from a web application (Linux/Apache/CGI::Application). To do this I use the Schedule::At module which is the Perl interface to the "at" command. Since the scheduled tasks are not repeating, I am not considering "cron". I have two issues with "at" though:

  1. Scheduling works fine when my CGI application runs under the suexec wrapper, but not when scheduled by the owner of the Apache process. How can I get scheduling to work in both environments (suexec and no-suexec)?
  2. It appears that the processes scheduled by "at" or Schedule::At have no failure reporting, and I sometimes find that scheduled tasks fail silently. Is there some way to log the fact that the scheduled task (not the scheduler itself) has failed to run?

I am not fixed on "at" and am open to using other, more robust, scheduling methods if there are any.

Thank you for your attention.

like image 886
Ya. Perelman Avatar asked Jun 03 '09 01:06

Ya. Perelman


People also ask

How do you schedule tasks periodically in Linux?

The cron daemon on Linux runs tasks in the background at specific times; it's like the Task Scheduler on Windows. Add tasks to your system's crontab files using the appropriate syntax and cron will automatically run them for you.


1 Answers

I've heard good things about The Schwartz . It doesn't have a delay-until though; you'd submit the jobs via at, but that should solve both of the problems you list above, as long as your submit_job script was simple.

(as a caveat, I've only used Gearman, I think you'd want a reliable job queue for this, a "fire and forget" mechanism, so you can keep your submit_job dumb.)

like image 53
Todd Gardner Avatar answered Oct 13 '22 21:10

Todd Gardner