是否有任何方法可以在任何操作员之外使用airflow宏?
例如,在dag中,我有一个动作:
datestamp = '{{ ds }}'
print(datestamp) # prints string not the date when I run it for any date
scanner = S3KeySensor(
task_id='scanner',
poke_interval=60,
timeout=24 * 60 * 60,
soft_fail=False,
wildcard_match=True,
bucket_key=getPath() + datestamp, #datestamp correctly replaced with execution date
bucket_name=bucketName,
dag=dag)
因此,在调用scanner时,“ds”值将替换为预期的执行日期,但我希望在其他地方使用“ds”值。但在这种情况下,它不会替换值,而是将整个字符串作为“{ds}”。在上面的例子中。print语句打印“{ds}}”,而不是执行日期。
2条答案
按热度按时间alen0pnh1#
使用双引号。
ut6juiuv2#
你真幸运
bucket_key
是模板化的,只要把金贾模板放进去。完全在运算符之外,不能使用这些宏。因为文件是由调度程序定期解释的,而不仅仅是在dag运行期间。那么它的价值是什么呢
ds
当狗不跑的时候?但是,由于您不太可能希望在任务之外对其进行任何处理,因此可以将其放入模板化字段中。还可以扩展另一个要模板化的字段。
编辑:iirc
self.my_thing
在初始化之后不会改变,而是context.my_thing
就在(?)?pre_execute
和)execute
被称为。