Что делать, если я не хочу, чтобы Луиджи выводил файл, а показывал задачу как завершенную? - PullRequest
0 голосов
/ 11 мая 2018

При циклическом просмотре файлов с помощью Luigi я не делаю, чтобы принудительно сохранять пустые файлы, просто чтобы показать, что задача выполнена, и позволить следующей задаче проверить, есть ли строки в тексте и т. Д.

Как получить задачу, показывающую, что она выполнена успешно (то есть метод run работал должным образом) без вывода файла? Я что-то здесь упускаю?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Также вы можете использовать MockTarget следующим образом:

class MyTask(luigi.Task):
    def requires(self):
        ...
    def run(self):
        ...
    def output(self):
        return MockFile("MyTask", mirror_on_stderr=True) # check that MyTask in quotes
0 голосов
/ 27 мая 2018

Вы можете переопределить всю функцию.

class LuigiTaskB(luigi.Task):
    def run(self):
        print "running task b"
        with self.output().open('w') as out_file:
            print >> out_file, "some text"

    def output(self):
        return luigi.LocalTarget("somefile")


class LuigiTaskA(luigi.Task):
    task_complete = False
    def requires(self):
        return LuigiTaskB()

    def run(self):
        print "running task a"
        self.task_complete = true

    def complete(self):
        # Make sure you return false when you want the task to run.
        # And true when complete

        return  self.task_complete
        # This will out put :
        #   running task b
        #   running task a
        # And this on the second time you'll run:
        #   running task a

Функция complete () просматривает функцию output (), переопределяя complete (), вы можете передать любой вывод и записать свой в завершенном состоянии.

Обратите внимание, что если ваша полная функция зависит от функции запуска, она не может быть пропущена.

...