셀러리가 잘 작동하고 Flask-Mail이 잘 작동하는 플라스크 응용 프로그램도 있습니다.Flask-Mail breaks Celery
from celery import Celery
from flask_mail import Mail, Message
app = Flask(__name__)
mail = Mail(app)
celery = Celery('main_app',
broker='mongodb://localhost',
backend='mongodb://localhost')
@celery.task
def cel_test():
return 'cel_test'
@app.route('/works_maybe')
def works_maybe():
return cel_test.delay()
는 SO FAR, SO GOOD
cel_test는 셀러리 노동자와 함께 잘 작동; 모든 것이 몽고에 나타납니다.
하지만 여기가 이상해집니다. "가입"플러스 메일 방법은 @celery.task
없이는 100 % 작동하지만, 작업이되면 폭발합니다.
@celery.task
def send_email(some_arg, name, email):
msg = Message(…message details..)
return mail.send(msg)
@app.route("/signup", methods=['POST'])
def signup():
return send_email.delay(...stuff for the message…)
R = retval = fun(*args, **kwargs)
File "/Users/username/pymods/virtualenvs/directory/lib/python2.7/site-packages/celery-3.0.15-py2.7.egg/celery/task/trace.py", line 415, in __protected_call__
return self.run(*args, **kwargs)
File "/Users/username/pymods/directory/directory/main_app/main_app.py", line 43, in send_email
something = 'a string in the Message'),
File "/Users/username/pymods/virtualenvs/directory/lib/python2.7/site-packages/flask/templating.py", line 123, in render_template
ctx.app.update_template_context(context)
AttributeError: 'NoneType' object has no attribute 'app'
사람이 왜 한 경우 셀러리에가 잘 작동하지만 mail.send을 포함하는 경우 (MSG)가 고장 설명 할 수있는 TRACE?
아마 내가 파이썬으로 더 일반적으로 배울 필요가있는 것이 있습니까?
적어도 이런 유형의 문제에 접근하는 것이 좋으면 크게 생각해보십시오.
'app = Flask (__ name__) 셀러리 = 셀러리 (__ name__) celery.conf.add_defaults (app.config)'를 사용 하시겠습니까? – Joe
좋아, 우리는 어딘가에있다. 이제 작업자가 다음을 제기합니다 :'[2013-02-23 15 : 59 : 52,093 : ERROR/MainProcess] '__main __. send_email'형식의 등록되지 않은 작업을 수신했습니다. KeyError : '__main __. send_email''Print Celery .tasks'는'<@task : __main __. send_email>'아마도 * 등록 된 것을 의미합니다. – Stuart