在下面,我想在一个文件中捕获“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 集群并需要其运行的所有作业的日志(包括来自 print 或 logger.info 的脚本的日志),这里有一个解决方案:
dask-worker >> dask_worker.log 2>&1
logger = logging.getLogger("distributed.worker")
.config/dask/distributed.yaml
结构化日志可以在这里提供帮助,文档中的示例:
def myfunc(x):
start = time()
...
stop = time()
dask.distributed.get_worker().log_event("runtimes", {"start": start, "stop": stop})
futures = client.map(myfunc, range(10))
client.get_events("runtimes")