簡體   English   中英

使用 celery 和 rabbitmq 運行 flask 應用程序

[英]Running flask app with celery and rabbitmq

我的 Flask 項目具有以下文件結構

flask_app/
    my_app/
        - __init__.py
        auth/
            - __init__.py
            - emailing.py
            - flask_celery 
            - models.py
            - views.py
        static/
            - css/
            - js/
        templates/
            - base.html
            - home.html
            - login.html
            - first_pdf.html 
    - run.py

在文件 emailing.py

from flask_mail import Message, Mail
from my_app import app
from my_app.auth.flask_celery import make_celery
from flask import render_template
import pdfkit
from my_app.auth.models import User

app.config["CELERY_BROKER_URL"] = "amqp://localhost:5672//"
celery = make_celery(app)
mail = Mail(app)


def sending_first_email(name, last_name):
    first_task.delay(name, last_name)
    return "Generated pdf and sent"

@celery.task(name="views.first_task")
def first_task(name, last_name):
    rendered = render_template("first_pdf.html", name=name, last_name=last_name)

    employee = User.query.filter_by(full_name=name + " " + last_name).first()
    pdf = pdfkit.from_string(rendered, False)
    msg = Message("New oncoming employee", sender="help@abc.ac.za", 
                  recipients= [employee.manager_email_address])

    msg.attach("employee.pdf", "application/pdf", pdf)
    msg.body = "Please find attached the details of the employee"
    mail.send(msg)
    return "First Message has been sent"

然后我們在flask_celery.py上設置celery。 我的問題現在是運行應用程序。 我首先啟動 rabbitmq 服務器,然后在項目根文件夾“flask_app”上嘗試以下命令

celery -A emailing.celery worker --loglevel=info

我收到一個錯誤“錯誤:'-A'/'--app' 的無效值:沒有名為'emailing'的模塊”並且在此目錄'flask_app/my_app/auth'上運行相同的命令時,我收到以下錯誤“錯誤:'-A' / '--app' 的值無效:沒有名為 'my_app' 的模塊”。 我能得到任何幫助來解決這個問題嗎?

您可以運行celery -A emailing worker --loglevel=info -Q views in folder in directory flask_app/my_app/auth 希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM