您需要
twistd从Twisted将脚本作为模块导入并调用它。使用您现有的命令行,最简单的解决方案是导入
sys模块以替换
argv命令行,使其看起来像您想要
twistd的运行方式,然后运行它。
这是一个简单的示例脚本,它将使用您现有的命令行并使用Python脚本而不是Shell脚本运行它:
#!/usr/bin/pythonfrom twisted.scripts.twistd import runfrom sys import argvargv[1:] = [ '-y', 'myapp.py', '--pidfile', '/var/run/myapp.pid', '--logfile', '/var/run/myapp.log']run()
如果您希望将其很好地捆绑到一个包中,而不是硬编码路径,则可以
myapp.py通过查看
__file__每个模块中Python设置的特殊变量来确定路径。将其添加到示例如下所示:
#!/usr/bin/pythonfrom twisted.scripts.twistd import runfrom my.application import some_modulefrom os.path import join, dirnamefrom sys import argvargv[1:] = [ '-y', join(dirname(some_module.__file__), "myapp.py"), '--pidfile', '/var/run/myapp.pid', '--logfile', '/var/run/myapp.log']run()
并且您显然可以做类似的事情来计算适当的pidfile和logfile路径。
一个更全面的解决方案是编写一个插件的
twistd。Axiom对象数据库项目中的公理命令行程序是一个经过测试的,有价值的示例,说明如何对上述内容执行类似的命令行 *** 作
twistd,但是对命令行选项的处理更为全面,不同非扭转运行实用程序功能,等等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)