我有一个Luigi管道,它由一个批量运行的任务图组成。其中一些任务依赖于昂贵的资源(例如awsec2机器集群或其他昂贵的资源)。在
我试图以一种聪明的方式使用这个resource
,这样我acquire
在运行任务之前使用它,release
在所有任务完成后立即使用它。一般来说,昂贵的资源是在管道开始时分配的,而依赖关系图的一半可以很好地释放出来。在
有没有一种有效的方法在Luigi中建模,以实现资源的aquire
和{
用Aquire
和Release
luigi.Task
s来建模并不是最佳的,因为它给我的图增加了很多复杂性和不必要的边。理想情况下,scheduler
将检查其state
,当不再有RUNNING
或{release
它。在
这个已经存在了吗,或者我必须自己将这个功能添加到Luigi中?在
Luigi支持这样的概念:当任务被调度和运行时,这些资源将被占用,然后在taks完成时释放。为什么你需要更先进的方法。在
从doc:
在您的例子中,您可以通过使
aws : 1
来建模。此资源一次只能使用一次。现在,如果你想控制任务是如何安排的,那么你可以尝试使用优先级。在然后,您可以在任务中添加:
^{pr2}$据我所知,没有办法直接获取资源,因为这是由任务执行控制的。在
更新(来自评论):
例如,如果您想执行某些操作(例如,清理),则可能需要使用事件处理程序。在
有关详细信息,请参阅完整的documentation。在
相关问题 更多 >
编程相关推荐