Mã này là kịch bản người lao động cần tây của tôi:Gửi nhiệm vụ email với bối cảnh đúng
from app import celery, create_app
app = create_app('default')
app.app_context().push()
Khi tôi cố gắng để chạy các công nhân tôi sẽ nhận được vào lỗi này:
File "/home/vagrant/myproject/venv/app/mymail.py", line 29, in send_email_celery
msg.html = render_template(template + '.html', **kwargs)
File "/home/vagrant/myproject/venv/local/lib/python2.7/site-packages/flask/templating.py", line 126, in render_template
ctx.app.update_template_context(context)
File "/home/vagrant/myproject/venv/local/lib/python2.7/site-packages/flask/app.py", line 716, in update_template_context
context.update(func())
TypeError: 'NoneType' object is not iterable
Câu hỏi của tôi là như thế nào có thể Tôi gửi tác vụ email, khi sử dụng một công nhân trong cần tây.
mymail.py
from flask import current_app, render_template
from flask.ext.mail import Message
from . import mail, celery
@celery.task
def send_async_email_celery(msg):
mail.send(msg)
def send_email_celery(to, subject, template, **kwargs):
app = current_app._get_current_object()
msg = Message(subject, sender=app.config['MAIL_SENDER'], recipients=[to])
msg.html = render_template(template + '.html', **kwargs)
send_async_email_celery.delay(msg)
__init__
...
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
bootstrap.init_app(app)
mail.init_app(app)
db.init_app(app)
login_manager.init_app(app)
celery.conf.update(app.config)
redis_store.init_app(app)
from .users import main as main_blueprint
app.register_blueprint(main_blueprint)
return app
Rõ ràng có một số mâu thuẫn giữa các kế hoạch chi tiết và người lao động. Loại bỏ kế hoạch chi tiết không phải là một tùy chọn, nếu có thể, do các bộ lọc tùy chỉnh mà tôi cần sử dụng trong mẫu email.
Tôi không làm theo lý do tại đây. Bạn có muốn nhân viên cần tây đăng ký kế hoạch chi tiết không? Nghe ngược lại với tôi, tôi mong đợi một kế hoạch chi tiết để đăng ký các nhiệm vụ cần tây, không phải là cách khác. Bạn có thể giải thích kế hoạch chi tiết phải làm gì không và công nhân cần làm gì? –
cũng có gì trong mẫu của bạn? – user3012759
@ user3012759 ngay cả với mẫu trống (chỉ để gỡ lỗi), tôi sẽ gặp lỗi. Vì vậy, vấn đề không phải là mẫu. – anvd