如何在文件中捕获 dask 工作线程控制台日志



在下面,我想在一个文件中捕获"dask_client_log_msg"和其他任务日志,在一个单独的文件中捕获"dask_worker_log_msg"和其他客户端日志。显然,客户端将在与工人完全不同的进程中运行。所以我需要一个进程应该将其所有消息记录在一个单独的文件中。谢谢!

def my_task():
  print("dask_worker_log_msg")
  ...
client = Client(<scheduler_address>)
future = client.submit(my_task)
print("dask_client_log_msg")
...
您可以使用

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

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

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

另请参阅如何从 Dask-Yarn 作业中捕获工作线程的日志?

最新更新