Revision 610bc9ee daemons/ganeti-masterd
b/daemons/ganeti-masterd | ||
---|---|---|
93 | 93 |
|
94 | 94 |
""" |
95 | 95 |
SocketServer.UnixStreamServer.__init__(self, address, rqhandler) |
96 |
self.do_quit = False |
|
97 | 96 |
self.context = context |
98 | 97 |
|
99 | 98 |
# We'll only start threads once we've forked. |
100 | 99 |
self.jobqueue = None |
101 | 100 |
self.request_workers = None |
102 | 101 |
|
103 |
signal.signal(signal.SIGINT, self.handle_quit_signals) |
|
104 |
signal.signal(signal.SIGTERM, self.handle_quit_signals) |
|
105 |
|
|
106 | 102 |
def setup_queue(self): |
107 | 103 |
self.jobqueue = jqueue.JobQueue(self.context) |
108 | 104 |
self.request_workers = workerpool.WorkerPool(CLIENT_REQUEST_WORKERS, |
... | ... | |
114 | 110 |
""" |
115 | 111 |
self.request_workers.AddTask(self, request, client_address) |
116 | 112 |
|
117 |
def handle_quit_signals(self, signum, frame): |
|
118 |
print "received %s in %s" % (signum, frame) |
|
119 |
self.do_quit = True |
|
120 |
|
|
121 | 113 |
def serve_forever(self): |
122 | 114 |
"""Handle one request at a time until told to quit.""" |
123 |
while not self.do_quit: |
|
124 |
self.handle_request() |
|
125 |
print "served request, quit=%s" % (self.do_quit) |
|
115 |
sighandler = utils.SignalHandler([signal.SIGINT, signal.SIGTERM]) |
|
116 |
try: |
|
117 |
while not sighandler.called: |
|
118 |
self.handle_request() |
|
119 |
finally: |
|
120 |
sighandler.Reset() |
|
126 | 121 |
|
127 | 122 |
def server_cleanup(self): |
128 | 123 |
"""Cleanup the server. |
Also available in: Unified diff