Skip to content

Commit 0b72acc

Browse files
committed
handle SIGINT, SIGTERM and SIGABRT
1 parent 8d267ed commit 0b72acc

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

telegram/updater.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import ssl
1010
from threading import Thread
1111
from time import sleep
12-
1312
import subprocess
13+
from signal import signal, SIGINT, SIGTERM, SIGABRT
1414

1515
from telegram import (Bot, TelegramError, dispatcher, Dispatcher,
1616
NullHandler)
@@ -58,6 +58,7 @@ def __init__(self, token, base_url=None, workers=4):
5858
self.last_update_id = 0
5959
self.logger = logging.getLogger(__name__)
6060
self.running = False
61+
self.is_idle = False
6162
self.httpd = None
6263

6364
def start_polling(self, poll_interval=1.0, timeout=10, network_delay=2):
@@ -229,11 +230,17 @@ def stop(self):
229230

230231
self.logger.debug("Dispatcher stopped.")
231232

233+
def signal_handler(self, signum, frame):
234+
self.is_idle = False
235+
self.stop()
236+
232237
def idle(self):
233238
""" Waits for the user to press Ctrl-C and stops the updater """
234-
while True:
235-
try:
236-
sleep(1)
237-
except KeyboardInterrupt:
238-
self.stop()
239-
break
239+
signal(SIGINT, self.signal_handler)
240+
signal(SIGTERM, self.signal_handler)
241+
signal(SIGABRT, self.signal_handler)
242+
243+
self.is_idle = True
244+
245+
while self.is_idle:
246+
sleep(1)

0 commit comments

Comments
 (0)