Как создать экземпляр класса Python в Luigi ExternalTask ​​и использовать экземпляр из обычной задачи Luigi - PullRequest
0 голосов
/ 08 октября 2018

У меня есть ExternalTask, как указано ниже:

class MyExternalTask1(ExternalTask):


    def output(self):
        #<what can I do here to call 'load_instance' method and set the instance as a Target>


    def load_instance(self):
        """Convenience method to load a :class:`.MyClass`"""

        return MyClass()

Мне нужен способ создания экземпляра внешнего класса и установки его в качестве Target для этой ExternalTask.

Я знаю, что могусделайте его обычным классом, вызовите «load_instance» при запуске, а затем сериализуйте экземпляр в выходной файл, который можно установить как Target.Но мне особенно нужен способ сделать это из ExternalTask.

Также мое другое требование - вызвать ExternalTask ​​из обычного Task-обертки и использовать в нем экземпляр Myclass.

Так что-то типа

class MyRegularTask1(luigi.Task):

    def requires(self):
        return {
            'data': MyExternalTask1()
         }

    def run(self):

        instance = (self.input()['data'].open('r'))
        #This 'instance' should be the instance that was created in my ExternalTask and I should then be able to call a function of this instance.
...