Python 如何获取有关特定Dask任务的信息
我遇到了一个问题,即我的分布式集群似乎“挂起”-例如,任务停止处理,因此未处理的任务积压,因此我正在寻找一些方法来帮助调试正在发生的事情 在Python 如何获取有关特定Dask任务的信息,python,distributed,dask,Python,Distributed,Dask,我遇到了一个问题,即我的分布式集群似乎“挂起”-例如,任务停止处理,因此未处理的任务积压,因此我正在寻找一些方法来帮助调试正在发生的事情 在客户机上有处理方法,该方法将告诉我每个工人当前正在运行哪些任务,但AFAICS是客户机对象上可用的关于任务的唯一信息 我希望能够查询的不仅仅是处理任务,还有所有任务,包括已处理、正在处理和出错,并且每个任务能够获得一些统计信息,例如submitted\u time和completion\u time,这将允许我找出阻止集群的任务 这类似于服务器上的扩展元数据
客户机
上有处理
方法,该方法将告诉我每个工人当前正在运行哪些任务,但AFAICS是客户机
对象上可用的关于任务的唯一信息
我希望能够查询的不仅仅是处理任务,还有所有任务,包括已处理、正在处理和出错,并且每个任务能够获得一些统计信息,例如submitted\u time
和completion\u time
,这将允许我找出阻止集群的任务
这类似于服务器上的扩展元数据
一个很好的选择就是能够获得任何给定任务的args/kwargs
。这对于调试失败的任务尤其有用
这些功能目前是否可用,或者是否有任何方法可以获取我想要的信息
任何关于如何调试该问题的其他建议都将受到极大欢迎。截至2017年5月,不存在明确的“向我提供有关任务的所有信息”操作。但是,您可以使用客户端直接调查任务状态。这需要您深入了解调度程序和工作程序跟踪的信息。请参见以下文档页面:
dask_调度程序
或dask_工作者
参数,则该函数将被赋予调度程序或工作者对象本身
def f(dask_scheduler):
return dask_scheduler.task_state
client.run_on_scheduler(f)
现在,您可以检查计划程序或工作程序知道的任何状态,并运行任何内部诊断检查。不过,您选择调查什么完全取决于您的用例
def f(keys, dask_scheduler=None):
return dask_scheduler.transition_story(*keys)
client.run_on_scheduler(f, [key1, key2, key3])
看起来应该是:
def(键,dask_调度程序):返回dask_调度程序。转换故事(*键)
谢谢@DaveHirschfeld。FixedIt看起来您现在必须调用dask_调度程序;看见