Tutorial web2py e Redis

52 views
Skip to first unread message

Fabiano Faver

unread,
Jun 16, 2015, 9:46:06 AM6/16/15
to web2py-us...@googlegroups.com
Seguindo o tutorial do Bruno Rocha: http://www.web2pyslices.com/slice/show/1579/web2py-and-redis-queue
Não consigo fazer rodar o formulário de email. Fiz igualzinho mas esbarro em um erro que não entendi se o tutorial esta precisando atualizar alguma coisa ou se falta eu resolver algum ponto. 

segue o erro:
Traceback (most recent call last):
 
File "/home/www-data/web2py/gluon/restricted.py", line 227, in restricted
   
exec ccode in environment
 
File "/home/www-data/web2py/applications/OPM/controllers/default.py", line 1768, in <module>
 
File "/home/www-data/web2py/gluon/globals.py", line 412, in <lambda>
   
self._caller = lambda f: f()
 
File "/home/www-data/web2py/applications/OPM/controllers/default.py", line 1745, in contato
    subject
="teste contacted you")#subject="%(name)s contacted you" % form.vars,
 
File "/usr/local/lib/python2.7/dist-packages/rq-0.5.3-py2.7.egg/rq/queue.py", line 253, in enqueue
    job_id
=job_id, at_front=at_front)
 
File "/usr/local/lib/python2.7/dist-packages/rq-0.5.3-py2.7.egg/rq/queue.py", line 215, in enqueue_call
   
return self.enqueue_job(job, at_front=at_front)
 
File "/usr/local/lib/python2.7/dist-packages/rq-0.5.3-py2.7.egg/rq/queue.py", line 270, in enqueue_job
    job
.save(pipeline=pipeline)
 
File "/usr/local/lib/python2.7/dist-packages/rq-0.5.3-py2.7.egg/rq/job.py", line 461, in save
    connection
.hmset(key, self.to_dict())
 
File "/usr/local/lib/python2.7/dist-packages/rq-0.5.3-py2.7.egg/rq/job.py", line 427, in to_dict
    obj
['data'] = self.data
 
File "/usr/local/lib/python2.7/dist-packages/rq-0.5.3-py2.7.egg/rq/job.py", line 227, in data
   
self._data = dumps(job_tuple)
 
File "/home/www-data/web2py/gluon/storage.py", line 56, in <lambda>
   
__getnewargs__ = lambda self: getattr(dict,self).__getnewargs__(self)
TypeError: getattr(): attribute name must be string


Alguém tem ideia do problema?

Marlysson Silva

unread,
Jun 16, 2015, 11:11:49 AM6/16/15
to web2py-us...@googlegroups.com
Qual o código dessa linha:

File "/home/www-data/web2py/applications/OPM/controllers/default.py", line 1768, in <module>
E nesta, não está faltando um "(" no começo da variável?
subject="teste contacted you")
E nessa:
TypeError: getattr(): attribute name must be string
No formulário tem algum campo ou variável do web2py que tenha esse valor? "nome".

Fabiano Faver

unread,
Jun 16, 2015, 12:20:21 PM6/16/15
to web2py-us...@googlegroups.com
eu peguei o trecho do tutorial:
def contact():
    form
= SQLFORM.factory(Field("name"), Field("message"))
   
if form.accepts(request):
       
# enqueue the email to be sent!
        q
.enqueue(mail.send,
                  to
="y...@gmail.com",

                  subject
="%(name)s contacted you" % form.vars,

                  message
=form.vars.message)                  # ESSA É A LINHA QUE PERGUNTOU
       
# do whatever you want
        response
.flash = "email successfully sent!"

só tinha mudado as variáveis pra strings fixas.

Identifiquei pela documentação que podemos passar a função(1 argumento) como string e é isso que ele ta exigindo nesse caso. Algo como ' gluon.tools.Mail.send', mas não está dando certo pois é função de instancia .Só que ele deveria aceitar os 2 modos o method ou o nome(string). 
Reply all
Reply to author
Forward
0 new messages