如何在文件中捕获dask-worker控制台日志。

时间:2018-02-01 10:35:02

标签: dask dask-distributed dask-delayed

def my_task():   打印( “dask_worker_log_msg”)   ...

client = Client()

future = client.submit(my_task) 打印( “dask_client_log_msg”) ...

我想在一个文件中捕获“dask_client_log_msg”和其他任务日志,并在单独的文件中捕获“dask_worker_log_msg”和其他客户端日志。显然,客户端将在一个单独的进程中运行,而不是工作者。所以我需要一个进程将其所有消息记录在一个单独的文件中。谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用Client.get_worker_logs方法从工作人员那里获取日志。您还可以从info窗格中的仪表板下载日志。

答案 1 :(得分:1)

如果您尝试实现Dask集群并需要其运行的所有作业的日志(包括来自print或logger.info的脚本中的日志),这是一个解决方案:

  1. 在您的bash脚本中添加一个重定向以启动worker: dask-worker >> dask_worker.log 2>&1
  2. 在脚本中,将记录器设置为dask.distributed,如下所示: logger = logging.getLogger("distributed.worker")
  3. .config/dask/distributed.yaml
  4. 配置日志格式

另请参阅How to capture logs from workers from a Dask-Yarn job?