Repository navigation
Expand file tree
/
Copy pathgmeinheld.py
More file actions
52 lines (38 loc) · 1.41 KB
/
Copy pathgmeinheld.py
File metadata and controls
52 lines (38 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import sys
import types
from gunicorn.workers.base import Worker
from gunicorn.glogging import Logger
from meinheld import server
from meinheld.mlogging import _access, _error
import os
class MeinheldWorker(Worker):
def __init__(self, *args, **kwargs):
Worker.__init__(self, *args, **kwargs)
Logger.access = _access
Logger.error = _error
if self.cfg.accesslog is self.cfg.logconfig is None:
server.set_access_logger(None)
else:
server.set_access_logger(self.log)
server.set_error_logger(self.log)
def watchdog(self):
self.notify()
if self.ppid != os.getppid():
self.log.info("Parent changed, shutting down: %s" % self)
server.stop(int(self.timeout))
def run(self):
if hasattr(self, "sockets"):
fds = [s.fileno() for s in self.sockets]
else:
fds = [self.socket.fileno()]
server.set_keepalive(self.cfg.keepalive)
server.set_picoev_max_fd(self.cfg.worker_connections)
server.set_fastwatchdog(self.tmp.fileno(), self.ppid, int(self.timeout))
#server.set_watchdog(self.watchdog)
server.set_listen_socket(fds)
server.run(self.wsgi)
def handle_quit(self, sig, frame):
server.stop(int(self.timeout))
def handle_exit(self, sig, frame):
server.stop()
sys.exit(0)