我使用dask-scheduler.exe和dask-worker.exe在几个Windows计算机上运行群集。使用python脚本通过Client.shutdown()API调用来指示群集关闭。
调度程序总是快速退出,但是工作进程一直徘徊,很少干净地完成。这是有问题的,因为这些作业是由另一个外部非Dask调度程序启动的,而且它们很少有机会将群集保持为干净状态。
我尝试使用DASK__DISTRIBUTED__ADMIN__TICK__INTERVAL = '20ms'
和DASK__DISTRIBUTED__ADMIN__TICK__LIMIT = '3h'
增加超时时间,但这并不能解决问题。
我注意到的一件事是干净地离开的工人,例如没有闲逛的人在日志中有一个“ Closing nanny”消息条目。但这不是一个普遍的规则,有时候,有些工人甚至没有达到“工人关闭”状态。我认为这可能是Dask-Scheduler退出的时间过早,但是我没有找到控制它的方法。用“ --no-nanny”尝试了工人,但是调度器无法启动,“-death-timeout 60”,但是即使调度器已经走了,它也不会退出工人。
...
distributed.nanny - INFO - Worker closed
distributed.nanny - INFO - Closing Nanny at 'tcp://xxx.xxx.xxx.xxx:xxxxx'
distributed.dask_worker - INFO - End worker```