dask / distributed

A distributed task scheduler for Dask
https://distributed.dask.org
BSD 3-Clause "New" or "Revised" License
1.56k stars 714 forks source link

Bokeh's log level set on import affects Panel/Bokeh apps #8750

Open maximlt opened 5 days ago

maximlt commented 5 days ago

Describe the issue:

Panel is a Python dashboarding framework that builds on and extends Bokeh. We have observed (https://github.com/holoviz/panel/issues/2302) that importing distributed in a Panel application affects the logs emitted by Bokeh.

The issue is that on import distributed configures some loggers, including Bokeh's logger that is set to the ERROR level, while it's by default at the INFO level.

https://github.com/dask/distributed/blob/50700f381075c8d2be1b17dacc1b5f48dcc93a88/distributed/config.py#L215

https://github.com/dask/distributed/blob/50700f381075c8d2be1b17dacc1b5f48dcc93a88/distributed/config.py#L97-L102

I would say that setting Bokeh's logger should not be done on import but only when the Dask dashboard is launched.

Minimal Complete Verifiable Example:

Install panel, launch this app with panel serve app.py and visit it at http://localhost:5006.

# app.py
import distributed
import panel as pn

pn.panel("Hello world!").servable()

You will get these logs printed in the console:

2024-07-04 15:19:44,133 Starting Bokeh server version 3.5.0rc1 (running on Tornado 6.4)
2024-07-04 15:19:44,135 User authentication hooks NOT provided (default user enabled)
2024-07-04 15:19:44,137 Bokeh app running at: http://localhost:5006/app
2024-07-04 15:19:44,137 Starting Bokeh server with process id: 75848

However, you should get these logs (comment out import distributed), with two additional lines.

2024-07-04 15:19:10,793 Starting Bokeh server version 3.5.0rc1 (running on Tornado 6.4)
2024-07-04 15:19:10,808 User authentication hooks NOT provided (default user enabled)
2024-07-04 15:19:10,810 Bokeh app running at: http://localhost:5006/app
2024-07-04 15:19:10,810 Starting Bokeh server with process id: 75753
2024-07-04 15:19:12,419 WebSocket connection opened
2024-07-04 15:19:12,419 ServerConnection created

Anything else we need to know?:

There's been some discussion already on this topic in 2019 when the bokeh log level set by distributed was decreased from CRITICAL to ERROR.

https://github.com/dask/distributed/issues/1683 https://github.com/dask/distributed/pull/3087

Environment:

fjetter commented 5 days ago

With https://github.com/dask/distributed/pull/8634 this will be a little less severe since we're delaying the initialization of logging until we actually need it but once we do it may still be global

maximlt commented 5 days ago

Cool I didn't see this PR, it's definitely going in the right direction :) Thanks for working on that!