kliron
kliron

Reputation: 4653

Override request timeout in pyramid/gunicorn

Pyramid (v1.5) application served by gunicorn (v19.1.1) behind nginx on a heroic BeagleBone Black "server".

One specific request requires significant I/O and processor time on the server (data exporting from database, formatting to xls and serving) which results in gunicorn worker timeout and a 'Bad gateway' error returned by nginx.

Is there a practical way to handle this per request instead of increasing the global request timeout for all requests? It is just this one specific request so I'm looking for the quickest and dirtiest solution instead of implementing a correct, asynchronous client notification protocol.

Upvotes: 2

Views: 1529

Answers (1)

crooksey
crooksey

Reputation: 8809

From the docs:

timeout¶

-t INT, --timeout INT
30

Workers silent for more than this many seconds are killed and restarted.

Generally set to thirty seconds. Only set this noticeably higher if you’re sure of the repercussions for sync workers. For the non sync workers it just means that the worker process is still communicating and is not tied to the length of time required to handle a single request. graceful_timeout

--graceful-timeout INT
30

Timeout for graceful workers restart.

Generally set to thirty seconds. How max time worker can handle request after got restart signal. If the time is up worker will be force killed. keepalive

--keep-alive INT
2

The number of seconds to wait for requests on a Keep-Alive connection.

Generally set in the 1-5 seconds range.

Upvotes: 4

Related Questions