## preambole
I have been working on porting django-celery to web2py-celery.
http://code.google.com/p/web2py-celery
There are a few issues to resolve and I am working on it.
Yet I found it to be overkill for most users. It has lots of
dependencies (for example RabbitMQ) and it is not easy to manage. If
you do not need a huge number of worker nodes there may be a better
solution.
So I added this to trunk:
gluon/scheduler.py
This email is a request for comments as I think this should replace te
current cron mechanism.
## What is it?
It is a lightweight replacement for celery that uses the database
instead of queues to schedule tasks and uses the default web2py admin
interface to allow you to schedule tasks. It consists of a single file
and has no dependencies.
## How does it work?
For any existing
app
Create File: app/models/scheduler.py
======
from gluon.scheduler import
Scheduler
def
demo1(*args,**vars):
print 'you passed args=%s and vars=%s' % (args,
vars)
return
'done!'
def
demo2():
1/0
scheduler =
Scheduler(db,dict(demo1=demo1,demo2=demo2))
=====================================
Create File: app/modules/scheduler.py
======
scheduler.worker_loop()
=====================================
## run worker nodes
with:
python web2py.py -S app -M -N -R applications/app/modules/
scheduler.py
## schedule jobs
using
http://127.0.0.1:8000/scheduler/appadmin/insert/db/task_scheduled
## monitor scheduled
jobs
http://127.0.0.1:8000/scheduler/appadmin/select/db?query=db.task_scheduled.id%3E0
## view completed
jobs
http://127.0.0.1:8000/scheduler/appadmin/select/db?query=db.task_run.id%3E0
Compared to celery it lacks the ability to bind tasks and workers ,
remotely interrupt tasks and set timeout, yet these features can be
added easily and I will so eventually.
Please let me know what you think.
Massimo