【问题标题】:How to run this Luigi Task- TaskClassNotFoundException(cls._missing_task_msg(name))如何运行这个 Luigi 任务-TaskClassNotFoundException(cls._missing_task_msg(name))
【发布时间】:2018-07-24 11:25:35
【问题描述】:

我正在尝试在名为 test.py 的命令提示符和名为 Test 的类中运行 1 个 luigi 任务,如下所示

luigi -m test Test --local-scheduler 

如何传递参数并在ubuntu中运行

代码示例:

class Test: 

    def requires(self):
        return class1(param1='path', param2='', param3=123)

    def run(self):
        # some logic with using those 3 params

    def output(self):
        pass

class Class1(luigi.Task):

    param1 = luigi.Parameter()
    fileparam = file
    param2 = luigi.Parameter(default=fileparam)
    param3 = luigi.Parameter(default=123)

但我收到此错误

File "/home/ubuntu/.local/bin/luigi", line 11, in <module>
sys.exit(luigi_run())
File "/home/ubuntu/.local/lib/python3.5/site-packages/luigi/cmdline.py", line 11, in luigi_run
run_with_retcodes(argv)
File "/home/ubuntu/.local/lib/python3.5/site-packages/luigi/retcodes.py", line 69, in run_with_retcodes
with luigi.cmdline_parser.CmdlineParser.global_instance(argv):
File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__
return next(self.gen)
File "/home/ubuntu/.local/lib/python3.5/site-packages/luigi/cmdline_parser.py", line 52, in global_instance
new_value = CmdlineParser(cmdline_args)
File "/home/ubuntu/.local/lib/python3.5/site-packages/luigi/cmdline_parser.py", line 76, in __init__
Register.get_task_cls(root_task)
File "/home/ubuntu/.local/lib/python3.5/site-packages/luigi/task_register.py", line 179, in get_task_cls
**raise TaskClassNotFoundException(cls._missing_task_msg(name))
luigi.task_register.TaskClassNotFoundException: No task Test.** Candidates are: Config,ExternalTask,RangeBase,RangeByMinutes,RangeByMinutesBase,RangeDaily,RangeDailyBase,RangeHourly,RangeHourlyBase,Task,TestNotificationsTask,WrapperTask,batch_email,core,email,execution_summary,retcode,scheduler,sendgrid,smtp,worker

【问题讨论】:

  • 您的 Test 类不是从 luigi.Task 扩展而来的。此外,您的 requires() 方法中有错字(class1 应大写)。

标签: python luigi


【解决方案1】:

尝试使用您的脚本在目录中运行它: python scrptfilenape.py Task --scheduler-host localhost

【讨论】:

  • 是的,我有同样的问题,this 有效。问题是为什么?
【解决方案2】:

如果文件是这样放置的

./test/__init__.py
./test/test.py

那么你需要运行

luigi -m test.test Test --local-scheduler 

【讨论】:

    【解决方案3】:
    import luigi
    class Test: 
    
        def requires(self):
            return class1(param1='path', param2='', param3=123)
    
        def run(self):
            # some logic with using those 3 params
    
        def output(self):
            pass
    
    class Class1(luigi.Task):
    
        param1 = luigi.Parameter()
        fileparam = file
        param2 = luigi.Parameter(default=fileparam)
        param3 = luigi.Parameter(default=123)
    
    if __name__ == '__main__':
        luigi.run()
    

    假设您将其保存为 sample.py。 你可以运行它作为 python -m sample Class1 --local-scheduler

    Class1 将是调用其他任务的主任务或包装任务。

    【讨论】:

      猜你喜欢
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 2016-03-11
      • 2021-04-24
      • 2017-01-06
      • 1970-01-01
      相关资源
      最近更新 更多