使用luigi.DateParameter在Luigi编排器Tas的run函数中

2024-10-05 21:59:42 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是使用Luigi Orchestrator的python代码。在

class AggregateArtists(luigi.Task):
    date = luigi.DateParameter(default=date.today() - timedelta(days=1))

    def requires(self):
        return []

    def run(self):
        ...

我想在我的run()函数中使用date参数。问题是我不知道这是什么类型的。在doc中,这个参数似乎是一个datetime.date,所以我应该能够使用方法self.date.strftime()。但是这种方法不适用于DateParameters。在

我的问题是:

  • 如何在run函数中使用代码的可变日期?是什么类型的?一根绳子,一根日期时间.日期还是别的什么?

  • 在某些时候,我需要将这个日期转换成YYYYMMDD格式的字符串,我该怎么做?


Tags: 方法函数run代码self类型task参数
1条回答
网友
1楼 · 发布于 2024-10-05 21:59:42

你的代码是不完整的,但我猜剩下的代码如下。您一定有错误,因为它是有效的:DateParameter返回一个python日期的值。见luigi source code for details。在

我的tasks/foo.py

from datetime import date, timedelta
import luigi


class AggregateArtists(luigi.Task):
    date = luigi.DateParameter(default=date.today() - timedelta(days=1))

    def output(self):
        return luigi.LocalTarget("/tmp/foobar.txt")

    def run(self):
        with self.output().open('w') as out_file:
            out_file.write(self.date.strftime("%Y%m%d") + "\n")


if __name__ == "__main__":
    luigi.run()

运行任务:

^{pr2}$

打印输出文件的内容:

$ cat /tmp/foobar.txt 
20151203

相关问题 更多 >