22
33from telegram import Update , NullHandler
44from future .utils import bytes_to_native_str as n
5+ from threading import Lock
56import json
67try :
78 import BaseHTTPServer
@@ -22,24 +23,29 @@ def __init__(self, server_address, RequestHandlerClass, update_queue,
2223 self .update_queue = update_queue
2324 self .webhook_path = webhook_path
2425 self .is_running = False
26+ self .server_lock = Lock ()
27+ self .shutdown_lock = Lock ()
2528
2629 def serve_forever (self , poll_interval = 0.5 ):
27- self .is_running = True
28- self .logger .info ("Webhook Server started." )
29- super (WebhookServer , self ).serve_forever (poll_interval )
30- self .logger .info ("Webhook Server stopped." )
30+ with self .server_lock :
31+ self .is_running = True
32+ self .logger .info ("Webhook Server started." )
33+ super (WebhookServer , self ).serve_forever (poll_interval )
34+ self .logger .info ("Webhook Server stopped." )
3135
3236 def shutdown (self ):
33- if not self .is_running :
34- return
35- else :
36- super (WebhookServer , self ).shutdown ()
37+ with self .shutdown_lock :
38+ if not self .is_running :
39+ return
40+ else :
41+ super (WebhookServer , self ).shutdown ()
42+ self .is_running = False
3743
3844
3945# WebhookHandler, process webhook calls
4046# Based on: https://github.com/eternnoir/pyTelegramBotAPI/blob/master/
4147# examples/webhook_examples/webhook_cpython_echo_bot.py
42- class WebhookHandler (BaseHTTPServer .BaseHTTPRequestHandler , object ):
48+ class WebhookHandler (BaseHTTPServer .BaseHTTPRequestHandler , object ):
4349 server_version = "WebhookHandler/1.0"
4450
4551 def __init__ (self , request , client_address , server ):
0 commit comments