2014-10-16 49 views
8

最近我一直在通过软件开发搅拌,并且顺利地将芹菜弯曲成我的意志。芹菜难度:功能对象没有属性'延迟'

我已经成功地使用它发送电子邮件,并试图使用几乎完全相同的代码(在重新启动所有进程等后)通过Twilio发送短信。

不过,我不断收到了以下问题:

File "/Users/Rob/Dropbox/Python/secTrial/views.py", line 115, in send_sms 
send_sms.delay(recipients, form.text.data) 
AttributeError: 'function' object has no attribute 'delay' 

我的代码如下:从我views.py调用时

@celery.task 
def send_email(subject, sender, recipients, text_body): 
    msg = Message(subject, sender=sender) 
    for email in recipients: 
     msg.add_recipient(email) 
    msg.body = text_body 
    mail.send(msg) 

@celery.task 
def send_sms(recipients, text_body): 
    for number in recipients: 
     print number 
     num = '+61' + str(number) 
     print num 
     msg = text_body + 'this message to' + num 
     client.messages.create(to=num, from_="+14804054823", body=msg) 

send_email.delay完美的作品,但是send_sms.delay失败每次都有上述错误。

任何帮助解决这个问题表示赞赏。

- 按照要求:

@app.route('/send_mail', methods=['GET', 'POST']) 
@roles_accepted('Admin') 
def send_mail(): 
    form = SendMailForm(request.form) 
    if request.method == 'POST': 
     if form.validate_on_submit(): 
      emails = db.session.query(User.email).all() 
      list_emails = list(zip(*emails)[0]) 
      send_email.delay('Subject', '[email protected]', list_emails, form.text.data) 
    return render_template('send_generic.html', form=form) 

@app.route('/send_sms', methods=['GET', 'POST']) 
@roles_accepted('Admin') 
def send_sms(): 
    form = SendMailForm(request.form) 
    if request.method == 'POST': 
     if form.validate_on_submit(): 
      recipients = db.session.query(User.mobile).all() 
      list_recipients = filter(None, list(zip(*recipients)[0])) 
      send_sms.delay(list_recipients, form.text.data) 
    return render_template('send_generic.html', form=form, send_sms=send_sms) 

我send_sms芹菜装饰功能被显示为一个注册任务:

和配置我只是使用guest:RabbitMQ的

CELERY_BROKER_URL = 'amqp://[email protected]//' 
CELERY_RESULT_BACKEND = 'amqp://[email protected]//' 
+0

你可以发布你的芹菜配置和意见? – ChillarAnand 2014-10-16 17:30:38

回答

12

视图名称send_sms与芹菜任务名称冲突。名称send_sms在包含视图的模块中使用时引用视图,而不是任务。

使用不同的名称来避免覆盖。

+0

我不敢相信我没有看到那里有问题。 非常感谢,治愈了。 – rob123 2014-10-17 00:36:25

相关问题