Skip to content

Instantly share code, notes, and snippets.

@BobDotCom
Created September 28, 2021 15:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BobDotCom/24a096affa497f5be428b1781c717650 to your computer and use it in GitHub Desktop.
Save BobDotCom/24a096affa497f5be428b1781c717650 to your computer and use it in GitHub Desktop.
from typing import Optional
from werkzeug.serving import make_server
import threading
from flask import Flask, request, current_app
import logging
logging.basicConfig(level=0, format="%(asctime)s [%(levelname)s] (%(name)s): %(message)s")
logger = logging.getLogger(__name__)
app = Flask(__name__)
@app.route("/")
def recieve_code():
current_app.auth_code = request.args['code']
return "Authorized. Please close this tab."
@app.after_request
def response_processor(response):
@response.call_on_close
def process_after_request():
stop_server()
return response
class ServerThread(threading.Thread):
def __init__(self, app):
threading.Thread.__init__(self)
self.srv = make_server('127.0.0.1', 5000, app)
self.ctx = app.app_context()
self.ctx.push()
def run(self):
logger.info('Starting up webserver')
self.srv.serve_forever()
def shutdown(self):
self.srv.shutdown()
server: Optional[ServerThread] = None
def start_server():
global server
server = ServerThread(app)
server.start()
logger.info('Webserver started up')
def stop_server():
logger.info('Webserver shutting down')
global server
server.shutdown()
logger.info('Webserver shut down')
if __name__ == "__main__":
start_server()
""" OUTPUT
% python3 webserver.py
2021-09-28 10:45:28,821 [INFO] (__main__): Starting up webserver
2021-09-28 10:45:28,821 [INFO] (__main__): Webserver started up
2021-09-28 10:45:31,493 [INFO] (werkzeug): 127.0.0.1 - - [28/Sep/2021 10:45:31] "GET /?code=asdf HTTP/1.1" 200 -
2021-09-28 10:45:31,498 [INFO] (__main__): Webserver shutting down
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment