trying to learn web2py with celery, but an error occured
*- install celery*
source activate test2
pip install celery

*- start redis server from source install (stable version 4.0.9)*
./src/redis-server

*- start web2py (stable version 2.16.1 on python 2.7)*
source activate test2
python ~/python/web2py/web2py.py --nogui --no-banner -a a -i 0.0.0.0 -p 8000

*- create new web2py app named : celery*

*- create modules*
modules/w2p_celery.py

from celery import Celery
mycelery = Celery('tasks', broker='redis://localhost:6379/0', 
backend='redis://localhost:6379/0')

*- create models*
*models/thecelerymodel.py*

from w2p_celery import mycelery
celery = mycelery
@celery.task(name='tasks.gen_url')
def gen_url(x):
    return A(x, _href=URL('rule_the_world'))

@celery.task(name='tasks.add_user')
def add_user():
    try:
       db.auth_user.insert(first_name='John')
       db.commit()
    except:
       db.rollback()

*- create tasks.py in the same folder as web2py.py*

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gluon.widget        #forgot: why this is apparently the only way to 
fix custom imports ?
from gluon.shell import env
from gluon import current
from celery import Celery

def make_celery(app):
    celery = Celery('tasks', broker='redis://localhost:6379/0', 
backend='redis://localhost:6379/0')
    TaskBase = celery.Task
    class ContextTask(TaskBase):
        abstract = True
        def __call__(self, *args, **kwargs):
            _env = env(a=app, import_models=True)
            globals().update(_env)
            return TaskBase.__call__(self, *args, **kwargs)
    celery.Task = ContextTask
    return celery

celery = make_celery('celery') #be sure that you write this correctly

@celery.task(name='tasks.gen_url')
def gen_url(x):
    return A(x, _href=URL(x, 'rule_the_world'))

@celery.task(name='tasks.add_user')
def add_user():   #yes, for the love of your apps, wrap all db operations!
    try:
        db.auth_user.insert(first_name='miao')
        db.commit()
    except:
        db.rollback()

*- start celery*
cd ~/python/web2py/
source activate test2
python

>>> import celery
>>> celery worker -A tasks
  File "<stdin>", line 1
    celery worker -A tasks
                ^
SyntaxError: invalid syntax

any idea?

thanks and best regards,
stifan

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to