Last active
September 19, 2019 15:56
-
-
Save mpelos/b4e9898741af8cf550fd3f74ed7bc4b7 to your computer and use it in GitHub Desktop.
Python Flask routing on Google Cloud Functions with support for flask error handlers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import requests | |
from flask import Flask, request | |
app = Flask(__name__) | |
@app.route('/', methods=["GET"]) | |
def index(): | |
return "Index" | |
@app.route('/loko/<int:some_number>', methods=["POST"]) | |
def loko(some_number): | |
return str(some_number) | |
# Google handler | |
def handler(request): | |
environ = request.environ | |
environ['PATH_INFO'] = environ['PATH_INFO'].replace('/execute', '') | |
urls = app.url_map.bind_to_environ(environ) | |
try: | |
endpoint, args = urls.match() | |
return getattr(sys.modules[__name__], endpoint)(**args) | |
except HTTPException as e: | |
handler = app.error_handler_spec.get(None, {}).get(e.code, {}).get(type(e)) | |
if (handler): return handler(e) | |
raise e | |
if __name__ == '__main__': | |
app.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment