Celery 忽略配置值

詹姆斯·俄语

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//

这是我尝试配置芹菜的地方

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()

app.config在打电话之前已经打印出来了celery.config_from_object(app.config),它确实包括我上面列出的芹菜值。我看过关于堆栈溢出的类似帖子,但还没有找到可以回答我的问题的帖子。

我正在使用 python 3.6 和 celery 4.1

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

这是一个指向最小示例存储库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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Docker配置:Celery + RabbitMQ

在 SourceLair 上配置 Celery

Django:如何使用 Celery 忽略任务?

Celery:发送任务时忽略交换名称

settings.py 文件中的 Celery 配置

django celery SQS“未配置结果后端。”

配置celery以等待后端服务启动

Python celery配置返回交换错误

如何为端口55672而不是15672配置Celery?(Celery 3.1与RabbitMQ 2.7:[Errno 111]连接被拒绝)

芹菜偶尔会忽略CELERY_TASK_DEFAULT_QUEUE

如何使用Redis Sentinel配置Airflow Celery执行器?

在Ubuntu中使用systemd配置celery-模块路径故障

如何配置docker以将Redis与celery一起使用

IO / CPU绑定任务的Celery并发配置

应用Celery配置时需要重新启动python

Django / Celery:max_retries可重试,但打印值始终是Celery的默认值(3)

杰克逊:忽略Json配置值

如何配置Celery在任务失败时发送电子邮件警报?

使用 django 配置 celery:app.config_from_object('django.conf:settings') 不起作用

如何在Microsoft Azure的Django项目中配置celery-redis?

如何在Docker上运行的Apache Superset中配置Celery Worker和Beat for Email Reporting?

如何在Flask应用程序中将配置参数传递给Celery任务?

celery守护程序:在配置文件中找不到/ celeryd错误

如何解决芹菜文件中关键字参数namespace ='“ CELERY”的芹菜工人配置错误

“ CELERY_BEAT_SCHEDULER”配置在Django设置中不起作用

在没有Djcelery的情况下使用Celery和Django配置Raven

如何使用 docker-compose 在分布式气流架构上配置 celery worker?

Celery:何时何地使用运行@task的.delay()的返回值来更新数据库?

ValueError:启动 celery worker 时没有足够的值来解包(预期为 3,得到 0)