当我编写一个将使用twistd
守护程序运行的扭曲服务时,我还想让它可配置并运行单独的守护程序,用于相同的服务,具有不同的配置。但是twistd
守护进程不接受(至少我看不清楚)命令行中的自定义参数,所以我要做的是在标准输入中传递配置文件:
twisd -y myservice.py < my.cfg
然后在myservice.py
我有以下内容:
cfg = parseConfig(sys.stdin.read())
application = Application('myapp')
MyService(a=cfg.a, b=cfg.b).setServiceParent(application)
这对我来说很好,但我想知道是否有正确的方法来做这件事?
答案 0 :(得分:1)
这看起来好像在这里记录了Twisted方式:
https://twistedmatrix.com/documents/12.0.0/core/howto/tap.html
您编写的插件添加了可以通过CLI使用的“子命令”
答案 1 :(得分:0)
我还想在没有插件机制的情况下添加一个选项,并避免使用stdio
- 即通过env变量:
CONFIG my.cfg twisd -y myservice.py
修改后的代码:
cfg = parseConfig(open(os.environ['CONFIG']).read())
(由于我的Linux经验有限,我之前没有想到这一点。)