How to find the cause of "task queue depth" warnings from waitress?

Question:

Is there a recommended way to diagnose the cause of task queue depth warnings like the one below from waitress? Perhaps there is some way to log queued tasks / requests?

2019-04-25 14:45:23,048 WARNI [waitress.queue:122][MainThread] Task
queue depth is 2

I am testing a pyramid application on a local Windows 10 machine. I attempted to change the logging level for waitress and waitress.queue to “INFO” as well as setting the expose_tracebacks argument to True, but neither resulted in additional console output beyond the warning (no other waitress.serve default arguments have been altered).

Versions:

  • waitress version 1.3.0
  • pyramid version 1.10.4
  • python version 3.6.5
Asked By: benvc

||

Answers:

The warning is very simple and directly related to the number of threads. Waitress defaults to 4 threads. A browser defaults to sending 6 requests at a time to each domain, so if you’re loading a site with a few static assets (images/css/js) then you’ll likely max that out and get a warning (6 – 4 = 2 as you’re seeing in your post). If you bump the number of threads at least to 6 you should stop seeing the warning normally.

Answered By: Michael Merickel

It’s basically an INFO (instead of WARNING) saying there are more requests than currently idle threads.

You can either bump up the threads or silence the waitress logging completely. Especially considering due to the waitress’ default logging setup, it could interfere with the application loggings.

https://github.com/Pylons/waitress/issues/133#issuecomment-629992140

Answered By: Jackie

The queue length refers to the number of requests waiting for a thread. The queue length can be configured by a backlog argument, passed to waitress.serve().
The default value is 1024.
Ref

To fix it do threads=100

 serve(apiview.app, host="0.0.0.0", port=8080, threads=100)
Answered By: realPro