gpt4 book ai didi

python - celery 忽略配置值

转载 作者:行者123 更新时间:2023-12-05 01:44:01 31 4
gpt4 key购买 nike

Celery 似乎出于某种原因忽略了我的配置值。我在我的应用 config.py

中设置了以下值
BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_RESULT_ENGINE_OPTIONS = {"pool_recycle": 7200, 'echo': True}
BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 3600}

但是 celery 继续尝试连接到以下代理 url amqp://guest:**@localhost:5672//

这是我尝试配置 celery 的地方

def configure_extensions(app):
# flask-sqlalchemy
db.init_app(app)

# marshmallow
ma.init_app(app)

# bcrypt
bcrypt.init_app(app)

#celery
celery.config_from_object(app.config)

这是我的extensions.py

# Flask-SQLAlchemy extension instance
from flask_sqlalchemy import SQLAlchemy
# flask_marshmallow extension instance
from flask_marshmallow import Marshmallow
# Bcrypt
from flask_bcrypt import Bcrypt
# flask_restful
from flask_restful import Api
#celery
from celery import Celery

celery = Celery()

db = SQLAlchemy()

ma = Marshmallow()

bcrypt = Bcrypt()

api = Api()

在调用 celery.config_from_object(app.config) 之前,我已经打印出 app.config 并且它包含我上面列出的 celery 值。我看过关于堆栈溢出的类似帖子,但还没有找到能回答我问题的帖子。

我正在使用 python 3.6 和 celery 4.1

有谁知道为什么它会忽略配置值?我检查了celery docs我认为我正在为配置使用正确的值

这里是一个最小示例存储库的链接 Github Repo

最佳答案

Celery 在 Flask 和应用程序工厂模式方面存在问题。 Miguel Grinberg 写了一篇关于它的很棒的博客文章:

https://blog.miguelgrinberg.com/post/celery-and-the-flask-application-factory-pattern

本质上,您需要在创建时传入代理 URL,而不是延迟它并稍后更新配置。

我像这样修改了你的app/extensions.py:

from celery import Celery                                                       

from . import celeryconfig
celery = Celery(__name__, broker=celeryconfig.broker_url,
backend=celeryconfig.result_backend)

现在,运行 celery worker 会产生以下结果:

bash# celery worker -A app.extensions

transport: redis://localhost:6379/0
results: redis://localhost:6379/0

关于python - celery 忽略配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47706343/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com