这是我面临的问题的简单版本。我在dodo.py
文件中有一个任务。此任务可以访问模块级变量name
。
# dodo.py
name = 'John'
def task_hello():
return {
'actions': [f'echo Hello {name}!']
}
现在,我想要此任务的不同版本。下面是一种幼稚的方法。
# dodo1.py
name = 'Tim'
def task_hello():
return {
'actions': [f'echo Hello {name}!']
}
和
# dodo2.py
name = 'Julia'
def task_hello():
return {
'actions': [f'echo Hello {name}!']
}
我确实需要多个dodo
模块。但是,我不想复制任务定义。
请注意,尽管为简单起见,在这里我只提到了一个任务,但是我有一组相互依赖的任务和子任务。另外,我不想使用命令行参数,而是希望有多个config
文件。
答案 0 :(得分:0)
最后我结束了这一步。这样就解决了问题。但是我愿意接受更优雅的解决方案。
dodo1.py
def mk_task_hello(name):
yield {
'basename': 'hello',
'name': 'world',
'actions': [f'echo Hello {name}!']
}
dodo2.py
from dodo1 import mk_task_hello
name = 'Tim'
def task_hello():
yield from mk_task_hello(name)
dodo3.py
from dodo1 import mk_task_hello
name = 'Julia'
def task_hello():
yield from mk_task_hello(name)
dodo1.py
是主要的任务实现模块,而dodo2.py
和dodo3.py
是不同的实例。请注意任务字典中的basename
字段。为了使任务依赖项(在上面的示例中未显示)起作用,这是必需的。