You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

doit任务无法接收命令行传入参数的问题求助

doit任务无法接收命令行传入参数的问题求助

嘿,我仔细看了下你的问题,这是因为doit不会自动把任务参数名映射成--xxx这种命令行长选项,得咱们手动绑定才行!

先看你现在的参数定义:

'params':[
    {'name':'zone', 'default': 'BLANKZONE'},
    {'name':'stype', 'default': 'BLANKSTYPE'}
]

这里你只给参数设了名字和默认值,但没告诉doit:“这个stype参数对应的命令行选项是--stype”。从错误日志里也能看出来端倪:

option --stype not recognized (parsing options: [CmdOption({'name':'zone', 'short':'','long':'' }), CmdOption({'name':'stype', 'short':'','long':'' })]). Got: ['--stype', 'email-sifter', '--zone', 'uat']

你看CmdOption里的long字段是空的,doit根本不知道--stype对应哪个任务参数,可不就报错说识别不了嘛!

解决方法超简单,给每个参数加上long字段,指定它对应的命令行长选项名就行,修改后的DAG代码如下:

def task_build():
    """build"""

    def python_build(stype, zone):
        print(f"TYPE: {stype}, ZONE: {zone}")

    return {
        'actions': [python_build],
        'verbosity':2,
        'params':[
            {'name':'zone', 'default': 'BLANKZONE', 'long': 'zone'},
            {'name':'stype', 'default': 'BLANKSTYPE', 'long': 'stype'}
        ]
    }

要是你想用短选项(比如-z代替--zone),还可以再加个short字段,比如{'name':'zone', 'default': 'BLANKZONE', 'long': 'zone', 'short': 'z'},这样命令行里用-z uat也能传参啦。

改完之后你再运行原来的命令:

doit -f ./srvapp/doit-build.py build --stype email-sifter --zone uat

应该就能正常识别参数,不会再报错啦!

备注:内容来源于stack exchange,提问作者Pompey Magnus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:03:02