mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2025-03-14 19:48:57 +01:00
WebhookServer: Lock serve_forever() and shutdown()
This commit is contained in:
parent
e1f3f346bc
commit
c2853fa1ef
1 changed files with 15 additions and 9 deletions
|
@ -2,6 +2,7 @@ import logging
|
|||
|
||||
from telegram import Update, NullHandler
|
||||
from future.utils import bytes_to_native_str as n
|
||||
from threading import Lock
|
||||
import json
|
||||
try:
|
||||
import BaseHTTPServer
|
||||
|
@ -22,24 +23,29 @@ class WebhookServer(BaseHTTPServer.HTTPServer, object):
|
|||
self.update_queue = update_queue
|
||||
self.webhook_path = webhook_path
|
||||
self.is_running = False
|
||||
self.server_lock = Lock()
|
||||
self.shutdown_lock = Lock()
|
||||
|
||||
def serve_forever(self, poll_interval=0.5):
|
||||
self.is_running = True
|
||||
self.logger.info("Webhook Server started.")
|
||||
super(WebhookServer, self).serve_forever(poll_interval)
|
||||
self.logger.info("Webhook Server stopped.")
|
||||
with self.server_lock:
|
||||
self.is_running = True
|
||||
self.logger.info("Webhook Server started.")
|
||||
super(WebhookServer, self).serve_forever(poll_interval)
|
||||
self.logger.info("Webhook Server stopped.")
|
||||
|
||||
def shutdown(self):
|
||||
if not self.is_running:
|
||||
return
|
||||
else:
|
||||
super(WebhookServer, self).shutdown()
|
||||
with self.shutdown_lock:
|
||||
if not self.is_running:
|
||||
return
|
||||
else:
|
||||
super(WebhookServer, self).shutdown()
|
||||
self.is_running = False
|
||||
|
||||
|
||||
# WebhookHandler, process webhook calls
|
||||
# Based on: https://github.com/eternnoir/pyTelegramBotAPI/blob/master/
|
||||
# examples/webhook_examples/webhook_cpython_echo_bot.py
|
||||
class WebhookHandler(BaseHTTPServer.BaseHTTPRequestHandler, object):
|
||||
class WebhookHandler(BaseHTTPServer.BaseHTTPRequestHandler, object):
|
||||
server_version = "WebhookHandler/1.0"
|
||||
|
||||
def __init__(self, request, client_address, server):
|
||||
|
|
Loading…
Add table
Reference in a new issue