python - Celery 忽略代理 URL
问题描述
我指定代理 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。
为什么会这样?
解决方案
为我设置app.config["BROKER_URL"]
而不是app.config["CELERY_BROKER_URL"]
切换代理 URL。我不确定为什么这是必要的,或者实际上为什么它甚至完全有效。
推荐阅读
- wso2 - WSO2 EI 在线日志中显示 JSON 有效负载
- jenkins - Jenkins 通用 webhook 触发器,一次多次调用
- firebird - 使用 FirebirdSql.Data.FirebirdClient (7.5.0) 和 Dapper 将 ASP.NET Core 3.1 与 Interbase XE7 连接起来
- javascript - javascript中HTML字符串与三元运算符的连接
- postgis - Mapbox GL 聚类与 Vector Tile 源
- xml - 根据以下兄弟对文本进行排序 - XSLT
- c++ - QVector::contains 因检查常量而失败
- python - Tkinter 滑块和 Raspberry Pi 4 GPIO 接口
- sql - SQL 触发器 DATEPART 未声明
- matlab - 内接和外接圆半径 - Matlab