mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
fix race condition error
When the worker exited the tempfile is not available anymore so we can't get the last update and calculate the dynamic timeout introduced in d76bab4d716fed3f965fbde4ba1a1bba975f03d1 . This changes fix it by catching the IO error. fix #863
This commit is contained in:
parent
49d50c81e9
commit
4fe426cd66
@ -305,7 +305,15 @@ class Arbiter(object):
|
|||||||
"""
|
"""
|
||||||
if self.WORKERS:
|
if self.WORKERS:
|
||||||
worker_values = list(self.WORKERS.values())
|
worker_values = list(self.WORKERS.values())
|
||||||
oldest = min(w.tmp.last_update() for w in worker_values)
|
|
||||||
|
oldest = time.time()
|
||||||
|
for w in worker_values:
|
||||||
|
try:
|
||||||
|
if w.tmp.last_update() < oldest:
|
||||||
|
oldest = w.tmp.last_update()
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
timeout = self.timeout - (time.time() - oldest)
|
timeout = self.timeout - (time.time() - oldest)
|
||||||
# The timeout can be reached, so don't wait for a negative value
|
# The timeout can be reached, so don't wait for a negative value
|
||||||
timeout = max(timeout, 1.0)
|
timeout = max(timeout, 1.0)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user