python - 如何让 Celery 从命令行加载配置?

标签 python celery

我正在尝试使用 celery worker 在命令行加载配置文件:

celery worker --config=my_settings_module

这似乎不起作用。 celery worker 启动并使用其默认设置(包括假设在 localhost:5672 有可用的 RabbitMQ 服务器)在我的配置中,我想将 celery 指向不同的地方。当我将配置文件中的 amqp 设置更改为某些内容时,Celery 似乎并不在意。它仍然显示默认的 RabbitMQ 设置。

我也试过一些假的

celery worker --config=this_file_does_not_exist

而 celery 再一次不在乎。 worker 启动并附加到默认的 RabbitMQ。它甚至没有查看 --config 设置

我读到了 Celery 是如何延迟加载的。我不确定这与此有什么关系。

如何让 celery worker 遵守 --config 设置?

最佳答案

如果您提供了一些无效的模块名称或不在 PYTHONPATH 中的模块名称,比如 celery worker --config=invalid_foo,celery 将忽略它。

您可以通过创建一个简单的配置文件来验证这一点。

$ celery worker -h

--config=CONFIG       Name of the configuration module

正如 celery worker 帮助中提到的,你应该通过配置模块。否则会引发错误。

如果你只是跑

celery worker

它将启动 worker 并且它的输出将被着色

在同一目录中,使用此行创建一个名为 c.py 的文件。

CELERYD_LOG_COLOR = False

现在运行

celery worker --config=c

它将启动 worker 并且它的输出将不着色

如果您运行 celery worker --config=c.py,它会引发错误。

celery.utils.imports.NotAPackage: Error: Module 'c.py' doesn't exist, or it's not a valid Python module name.
Did you mean 'c'?

关于python - 如何让 Celery 从命令行加载配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35674946/

相关文章:

python - Azure 数据湖的 Azure 函数绑定(bind) (python)

python - 使用高级选项的 TwitterAPI 过滤器位置

python - 如何将模型中的更改传播到 View ? (使用pyqt信号和槽)

python - Pandas 数据帧聚合

python - 循环运行相同的 celery 任务

python - Celery Cloudamqp 为每个任务创建新连接

python - 如何根据 tensorflow 中的列条件获取张量值的索引

python - 如何在其他(已经启动的)任务完成后运行任务

python - 模拟 Celery 任务方法 apply_async

concurrency - 使用 Celery 同时由两个工作进程运行的独特任务