gunicorn源码分析:Master-Worker模式(2)

gunicorn源码分析:Master-Worker模式(2)

worker代码

看一下worker类的实现

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
class Worker(object):

SIGNALS = map(
lambda x: getattr(signal, "SIG%s" % x),
"HUP QUIT INT TERM TTIN TTOU USR1".split()
)

def __init__(self, workerid, ppid, socket, app):
self.id = workerid # 顺序号1,2,3...
self.ppid = ppid. # 子进程的pid
fd, tmpname = tempfile.mkstemp()
self.tmp = os.fdopen(fd, "r+b")
self.tmpname = tmpname

# prevent inherientence
self.close_on_exec(socket)
self.close_on_exec(fd)

self.socket = socket
self.address = socket.getsockname()

self.app = app
self.alive = True

self.log = logging.getLogger(__name__)