mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
add timeout support
This commit is contained in:
parent
80e0acf9db
commit
090bb8fe29
@ -21,6 +21,10 @@ class AsyncWorker(Worker):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
Worker.__init__(self, *args, **kwargs)
|
Worker.__init__(self, *args, **kwargs)
|
||||||
self.worker_connections = self.cfg.worker_connections
|
self.worker_connections = self.cfg.worker_connections
|
||||||
|
|
||||||
|
def keepalive_request(self, client, addr):
|
||||||
|
return http.KeepAliveRequest(client, addr, self.address,
|
||||||
|
self.cfg)
|
||||||
|
|
||||||
def handle(self, client, addr):
|
def handle(self, client, addr):
|
||||||
try:
|
try:
|
||||||
@ -49,7 +53,9 @@ class AsyncWorker(Worker):
|
|||||||
util.close(client)
|
util.close(client)
|
||||||
|
|
||||||
def handle_request(self, client, addr):
|
def handle_request(self, client, addr):
|
||||||
req = http.KeepAliveRequest(client, addr, self.address, self.cfg)
|
req = self.keepalive_request(client, addr)
|
||||||
|
if not req:
|
||||||
|
return False
|
||||||
try:
|
try:
|
||||||
environ = req.read()
|
environ = req.read()
|
||||||
if not environ or not req.parser.headers:
|
if not environ or not req.parser.headers:
|
||||||
|
|||||||
@ -35,6 +35,12 @@ class EventletWorker(AsyncWorker):
|
|||||||
raise RuntimeError("You need eventlet >= 0.9.7")
|
raise RuntimeError("You need eventlet >= 0.9.7")
|
||||||
eventlet.monkey_patch(all=False, socket=True, select=True)
|
eventlet.monkey_patch(all=False, socket=True, select=True)
|
||||||
|
|
||||||
|
def keepalive_request(self, client, addr):
|
||||||
|
req = None
|
||||||
|
with eventlet.Timeout(self.cfg.keepalive, False):
|
||||||
|
req = super(EventletWorker, self).keepalive_request(client, addr)
|
||||||
|
return req
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.socket.setblocking(1)
|
self.socket.setblocking(1)
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import os
|
|||||||
|
|
||||||
import gevent
|
import gevent
|
||||||
from gevent import monkey
|
from gevent import monkey
|
||||||
|
monkey.noisy = False
|
||||||
from gevent import socket
|
from gevent import socket
|
||||||
from gevent import greenlet
|
from gevent import greenlet
|
||||||
from gevent.pool import Pool
|
from gevent.pool import Pool
|
||||||
@ -26,6 +27,12 @@ class GEventWorker(AsyncWorker):
|
|||||||
from gevent import monkey
|
from gevent import monkey
|
||||||
monkey.patch_all()
|
monkey.patch_all()
|
||||||
|
|
||||||
|
def keepalive_request(self, client, addr):
|
||||||
|
req = None
|
||||||
|
with gevent.Timeout(self.cfg.keepalive, False):
|
||||||
|
req = super(GEventWorker, self).keepalive_request(client, addr)
|
||||||
|
return req
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.socket.setblocking(1)
|
self.socket.setblocking(1)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user