我需要自己为 LocalTargets 处理原子性吗?

Do I need to handle atomicity myself for LocalTargets?

Luigi 文档描述了 potential problems regarding atomicity 写入目标。他们说这是一个常见的陷阱,应该使用最终移动到目标位置的临时目录来处理。

如果我的目标是单个文件,我还需要自己处理吗LocalTarget

luigi.local_target模块包含一个atomic_fileclass,这似乎表明这是自动完成的,设计目标include “atomic file system operations”。但是我找不到任何说明 LocalTarget 可以安全使用的文档。

如果你看到Luigi的代码luigi/local_target.py class LocalTarget:

def open(self, mode='r'):
    rwmode = mode.replace('b', '').replace('t', '')
    if rwmode == 'w':
        self.makedirs()
        return self.format.pipe_writer(atomic_file(self.path))

Luigi 创建一个临时文件,当它关闭时,更改为最终名称。