| 160 | self.wsgi = util.make_fail_app(tb_string.getvalue()) |
| 161 | |
| 162 | def init_signals(self): |
| 163 | # reset signaling |
| 164 | for s in self.SIGNALS: |
| 165 | signal.signal(s, signal.SIG_DFL) |
| 166 | # init new signaling |
| 167 | signal.signal(signal.SIGQUIT, self.handle_quit) |
| 168 | signal.signal(signal.SIGTERM, self.handle_exit) |
| 169 | signal.signal(signal.SIGINT, self.handle_quit) |
| 170 | signal.signal(signal.SIGWINCH, self.handle_winch) |
| 171 | signal.signal(signal.SIGUSR1, self.handle_usr1) |
| 172 | signal.signal(signal.SIGABRT, self.handle_abort) |
| 173 | |
| 174 | # Don't let SIGTERM and SIGUSR1 disturb active requests |
| 175 | # by interrupting system calls |
| 176 | signal.siginterrupt(signal.SIGTERM, False) |
| 177 | signal.siginterrupt(signal.SIGUSR1, False) |
| 178 | |
| 179 | if hasattr(signal, 'set_wakeup_fd'): |
| 180 | signal.set_wakeup_fd(self.PIPE[1]) |
| 181 | |
| 182 | def handle_usr1(self, sig, frame): |
| 183 | self.log.reopen_files() |