Я указываю 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 брокера.
Почему это может быть?