Сельдерей игнорирует URL брокера - PullRequest
0 голосов
/ 14 июня 2019

Я указываю URL брокера.

def create_app():
    app = Flask(__name__)
    app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///persistent/msr.db"
    app.config["SECRET_KEY"] = "lelsosecret"
    app.config["CELERY_BROKER_URL"] = "amqp://guest:guest@msr:5672"
    app.config["CELERY_RESULT_BACKEND"] = "db+sqlite:///persistent/msr.db"
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    db.init_app(app)
    celery.init_app(app)
    return app

В файле extensions.py есть соответствующий код.

class FlaskCelery(Celery):
    def __init__(self, *args, **kwargs):
        super(FlaskCelery, self).__init__(*args, **kwargs)
        self.patch_task()
        if "app" in kwargs: self.init_app(kwargs["app"])

    def patch_task(self):
        TaskBase = self.Task
        _celery = self

        class ContextTask(TaskBase):
            abstract = True

            def __call__(self, *args, **kwargs):
                if flask.has_app_context():
                    return TaskBase.__call__(self, *args, **kwargs)
                else:
                    with _celery.app.app_context():
                        return TaskBase.__call__(self, *args, **kwargs)

        self.Task = ContextTask

    def init_app(self, app):
        self.app = app
        self.config_from_object(app.config)

auth = HTTPBasicAuth()
celery = FlaskCelery()
db = SQLAlchemy()

Однако Celery никогда не устанавливает URL-адрес брокера, независимо от того, на что я его изменяю.

Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.

Docker Compose работает, это правда. Но делать это вне docker, моей старой «глубоко укоренившейся» структуры, также никогда не позволяло мне изменить URL брокера.

Почему это может быть?

1 Ответ

0 голосов
/ 16 июня 2019

Установка app.config["BROKER_URL"] вместо app.config["CELERY_BROKER_URL"] переключила URL брокера для меня. Я не уверен, почему это было необходимо, или почему это вообще работает, на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...