Web2py scheduler – Best practices to rerun task continuously and to add task at startup

Question:

I want to add a task to the queue at app startup, currently adding a scheduler.queue_task(...) to the main db.py file. This is not ideal as I had to define the task function in this file.

I also want the task to repeat every 2 minutes continuously.

I would like to know what is the best practices for this?

Asked By: frage

||

Answers:

There is no real mechanism for this within web2py it seems.

There are a few hacks one could do to continuously repeat tasks or schedule at startup but as far as I can see the web2py scheduler needs alot of work.

Best option is to just abondon this web2py feature and use celery or similar for advanced usage.

Answered By: frage

As stated in web2py doc, to rerun task continuously, you just have to specify it at task queuing time :

scheduler.queue_task(your_function,
                     pargs=your_args,
                     timeout = 120,  # just in case
                     period=120,     # as you want to run it every 2 minutes
                     immediate=True, # starts task ASAP
                     repeats=0       # just does the infinite repeat magic
                     )

To queue it at startup, you might want to use web2py cron feature this simple way:

@reboot root    *your_controller/your_function_that_calls_queue_task

Do not forget to enable this feature (-Y, more details in the doc).

Answered By: Frédéric
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.