trying to learn web2py with rq but ended with error
*- install rq*
source activate test2
pip install rq
*- 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 : redis*
*- create modules*
*modules/queued_functions.py*
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# need to put this for mail to work
import sys
sys.path.append("/Users/sugizo/python/web2py")
from gluon.tools import Mail
def send_email(*args, **kwargs):
mail = Mail()
mail.settings.server = 'mail.hosting.com:25'
mail.settings.sender = '[email protected]'
mail.settings.login = '[email protected]:password'
return mail.send(*args, **kwargs)
*- add to models*
*models/db.py*
from redis import Redis
from rq import Queue
q = Queue(connection=Redis())
*- add to controllers*
*controllers/default.py*
def contact():
import queued_functions
form = SQLFORM.factory(Field("name", label="your name"),
Field("message", "text"))
if form.accepts(request):
q.enqueue(queued_functions.send_email, to="[email protected]",
subject="%s contacted you" % form.vars.name, message=form.vars.message)
return dict(form=form)
*- start redis server from source install (stable version 4.0.9)*
./src/redis-server
*- start rqworker*
source activate test2
rqworker
*- fill the form in browser : http://localhost:8000/redis/default/contact*
*result in rqworker*
04:40:32 default:
applications.redis.modules.queued_functions.send_email(message='a',
subject='a contacted you', to='[email protected]')
(b416fc6c-f6c9-4415-8194-0e75fdc47a10)
04:40:32 ImportError: No module named
applications.redis.modules.queued_functions
Traceback (most recent call last):
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/worker.py",
line 789, in perform_job
rv = job.perform()
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/job.py",
line 573, in perform
self._result = self._execute()
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/job.py",
line 579, in _execute
return self.func(*self.args, **self.kwargs)
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/job.py",
line 206, in func
return import_attribute(self.func_name)
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/utils.py",
line 152, in import_attribute
module = importlib.import_module(module_name)
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/importlib/__init__.py",
line 37, in import_module
__import__(name)
ImportError: No module named applications.redis.modules.queued_functions
Traceback (most recent call last):
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/worker.py",
line 789, in perform_job
rv = job.perform()
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/job.py",
line 573, in perform
self._result = self._execute()
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/job.py",
line 579, in _execute
return self.func(*self.args, **self.kwargs)
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/job.py",
line 206, in func
return import_attribute(self.func_name)
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/site-packages/rq/utils.py",
line 152, in import_attribute
module = importlib.import_module(module_name)
File
"/Users/sugizo/miniconda3/envs/test2/lib/python2.7/importlib/__init__.py",
line 37, in import_module
__import__(name)
ImportError: No module named applications.redis.modules.queued_functions
04:40:32 Moving job to u'failed' queue
04:40:32 Cleaning registries for queue: default
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 [email protected].
For more options, visit https://groups.google.com/d/optout.