gpt4 book ai didi

python - 如何将设置传递给 rq 任务?

转载 作者:行者123 更新时间:2023-11-28 19:29:51 26 4
gpt4 key购买 nike

我想知道将设置从 RQ worker 传递到任务函数的最佳方法是什么?

我想将我的所有设置保存在应用程序之外的文本文件中,然后在工作人员启动时读取它,然后使用这些值来执行实际任务。

现在我正在使用 os.environ。

谢谢!

最佳答案

它出现在documentation从“Custom worker classes”部分可以看出,这样做的方法是编写一个自定义 worker 类。这是我一直在使用的模式,它将 ConfigParser 文件的一部分加载到名为 config 的虚拟 python 模块中:

import configparser
import rq.worker
import sys
import types


class ConfigurableWorker(rq.worker.Worker):
"""An RQ Worker class which loads configuration from config.ini"""

def work(self, *args, **kwargs):
"""Perform RQ work"""

# Store some configuration on a virtual module
sys.modules['config'] = types.ModuleType('config')
import config
config_reader = configparser.ConfigParser()
config_reader.read('config.ini')
for key, value in config_reader['rq'].items():
setattr(config, key, value)

# Do work
super().work(*args, **kwargs)

然后从工作职能:

def my_bunch_of_work():
import config
con = db_connection(url=config.my_db_connection)

可以使用 --worker-class 参数运行带有客户 worker 类的 rq worker 。

$ rq worker --worker-class my.prog.ConfigurableWorker

ConfigurableWorker.work 方法中进行某种连接池设置可能会很好,但我不确定这样做的安全性,因为我不太了解 RQ worker fork 模型 os.fork()

关于python - 如何将设置传递给 rq 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13068056/

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