def start_listening(bot=None, loop=None, name="", port=8000, certfile=None,
webhook_receiver=BaseHTTPRequestHandler,
friendly_name="UNKNOWN"):
if loop:
asyncio.set_event_loop(loop)
if bot:
webhook_receiver._bot = bot
try:
httpd = HTTPServer((name, port), webhook_receiver)
if certfile:
httpd.socket = ssl.wrap_socket(
httpd.socket,
certfile=certfile,
server_side=True)
socket = httpd.socket.getsockname()
logger.info("%s : %s:%s...", friendly_name, socket[0], socket[1])
httpd.serve_forever()
except ssl.SSLError:
logger.exception("%s : %s:%s, pem file is invalid/corrupt",
friendly_name, name, port)
except OSError as err:
if err.errno == 2:
message = ".pem file is missing/unavailable"
elif err.errno == 98:
message = "address/port in use"
else:
message = str(err.strerror)
logger.exception("%s : %s:%s, %s", friendly_name, name, port, message)
try:
httpd.socket.close()
except:
pass
except KeyboardInterrupt:
httpd.socket.close()
评论列表
文章目录