dcc.Download() takes a long time or does not finish with a tiny bit more data. I

Describe your context
dcc.Download() takes a long time or does not finish with a tiny bit more data. It works with smaller amounts of data. There is no error thrown in the console. Trying to send a dataframe with 27k rows. It seems dcc.send_data_frame() is very inefficcent. It works when the download format is csv, but not with xlsx.

  • replace the result of pip list | grep dash below
dash                      2.9.2
dash-bootstrap-components 1.4.1
dash-core-components      2.0.0
dash-html-components      2.0.0
dash-table                5.0.0
  • if frontend related, tell us your Browser, Version and OS
    • OS: W11
    • Browser chrome
    • Version 112.0.5615.49 (Official Build) (64-bit)

Describe the bug

dcc.Download() takes a long time or does not finish with a tiny bit more data. It works with smaller amounts of data. There is no error thrown in the console. Only the waitress task queue is increasing:

WARNING:waitress.queue:Task queue depth is 1
WARNING:waitress.queue:Task queue depth is 1
WARNING:waitress.queue:Task queue depth is 1
WARNING:waitress.queue:Task queue depth is 2
WARNING:waitress.queue:Task queue depth is 1
WARNING:waitress.queue:Task queue depth is 2
WARNING:waitress.queue:Task queue depth is 3
WARNING:waitress.queue:Task queue depth is 4
WARNING:waitress.queue:Task queue depth is 5
WARNING:waitress.queue:Task queue depth is 6

Expected behavior

The download should be done in seconds.

Screenshots

image

Could you post a MWE, i.e. code that runs and reproduces the error? How large is the data? How long does it take to write the dataframe to xlsx to the local disk? Do you have any timeouts and/or size limitations in your production setup?