Python 将自己的参数传递给ryu代理应用程序
我正在开发应用程序。该应用程序基本上是一个python脚本。ryu应用程序由ryu manager调用,如下所示 ryu管理器{filename} ryu manager采用了某些参数。我想知道是否有一种方法可以将参数传递给我的文件 python解析命令行选项的模块已经存在,但我不确定它是否能工作,因为我提供的所有参数都是由ryu manager使用的,而不是我的脚本Python 将自己的参数传递给ryu代理应用程序,python,open-source,command-line-arguments,Python,Open Source,Command Line Arguments,我正在开发应用程序。该应用程序基本上是一个python脚本。ryu应用程序由ryu manager调用,如下所示 ryu管理器{filename} ryu manager采用了某些参数。我想知道是否有一种方法可以将参数传递给我的文件 python解析命令行选项的模块已经存在,但我不确定它是否能工作,因为我提供的所有参数都是由ryu manager使用的,而不是我的脚本 任何帮助都将不胜感激。我还没有尝试过,但是: “Ryu目前使用oslo.config.cfg进行命令行解析。 (ryu/cont
任何帮助都将不胜感激。我还没有尝试过,但是: “Ryu目前使用oslo.config.cfg进行命令行解析。 (ryu/contrib/oslo/config)。 树中有几个示例。ryu/app/tunnel\u port\u updater.py“ 从 另见 Ryu的“入门”页面只是建议:
ryu管理器[--flagfile][generic/application-specific选项…]
我没有找到将参数传递给ryu控制器的方法。我使用的一种方法是将参数作为环境变量传递。例如,我有一个调用ryu manager的程序,需要向应用程序传递一个参数。我是这样做的:
ARG=value ryu manager app.py
这样做是一个4步过程。我将展示一个示例,在这个示例中,您可以读取参数,然后打印它们,但是您可以将它们分配给变量,或者通过引用此过程来执行任何操作
from ryu import cfg
:
:
class SimpleSwitch13(app_manager.RyuApp):
def __init__(self, *args, **kwargs):
super(SimpleSwitch13, self).__init__(*args, **kwargs)
:
CONF = cfg.CONF
CONF.register_opts([
cfg.IntOpt('param1_int', default=0, help = ('The ultimate answer')),
cfg.StrOpt('param2_str', default='default', help = ('A string')),
cfg.ListOpt('param3_list', default = None, help = ('A list of numbers')),
cfg.FloatOpt('param4_float', default = 0.0, help = ('Pi? Yummy.'))])
print 'param1_int = {}'.format(CONF.param1_int))
print 'param2_str = {}'.format(CONF.param2_str))
print 'param3_list = {}'.format(CONF.param3_list))
print 'param4_float = {}'.format(CONF.param4_float))
ryu-manager paramtest.py --config-file [PATH/TO/FILE/params.conf]
在整理我的答案时,我引用了以下内容,它们可以提供更多细节(比如oslo.config的东西,在遇到这个问题之前我从未听说过) 有关oslo.config的更多信息:
Ryu关于此问题的电子邮件链:这不会起作用,因为在调用应用程序时,使用配置选项提供的应用程序中的所有示例都不会从命令行初始化。
ryu-manager paramtest.py --config-file [PATH/TO/FILE/params.conf]