Skip to content
This repository was archived by the owner on Sep 27, 2019. It is now read-only.

Commit 323e523

Browse files
committed
Use HTTP server from gevent
1 parent 1e06952 commit 323e523

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

fiaas_ais/ais.py

+35-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
1-
from flask import Flask, request, make_response, abort
2-
from flask_talisman import Talisman, DENY
31
import json
4-
import boto3
2+
import logging
3+
import sys
54
from datetime import datetime
5+
6+
from gevent import monkey
7+
8+
# This need to be before boto3
9+
monkey.patch_all() # NOQA
10+
11+
import boto3
12+
import time
13+
14+
from flask import Flask, request, make_response, abort
15+
from flask_talisman import Talisman, DENY
16+
from gevent.pywsgi import WSGIServer, LoggingLogAdapter
617
from prometheus_client import generate_latest, CONTENT_TYPE_LATEST, Histogram
718

19+
LOG = logging.getLogger(__name__)
20+
821
app = Flask(__name__)
922
# TODO: These options are like this because we haven't set up TLS
1023
Talisman(app, frame_options=DENY, force_https=False, strict_transport_security=False)
@@ -39,6 +52,12 @@ def _verify(data):
3952
abort(400, '%s must be specified' % k)
4053

4154

55+
@app.route('/_/slow')
56+
def slow():
57+
time.sleep(1)
58+
return make_response('', 200)
59+
60+
4261
@app.route('/_/health')
4362
@health_histogram.time()
4463
def health():
@@ -53,8 +72,20 @@ def metrics():
5372
return resp
5473

5574

75+
def _init_logging():
76+
root = logging.getLogger()
77+
root.setLevel(logging.INFO)
78+
handler = logging.StreamHandler(sys.stdout)
79+
handler.setFormatter(logging.Formatter("[%(asctime)s|%(levelname)7s] %(message)s [%(name)s|%(threadName)s]"))
80+
root.addHandler(handler)
81+
82+
5683
def main():
57-
app.run(host='0.0.0.0')
84+
_init_logging()
85+
log = LoggingLogAdapter(LOG, logging.DEBUG)
86+
error_log = LoggingLogAdapter(LOG, logging.ERROR)
87+
http_server = WSGIServer(("", 5000), app, log=log, error_log=error_log)
88+
http_server.serve_forever()
5889

5990

6091
if __name__ == '__main__':

setup.py

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def version():
2020
"flask-talisman==0.5.1",
2121
"boto3==1.5.24",
2222
"prometheus_client == 0.3.1",
23+
"gevent == 1.3.7",
2324
]
2425

2526
CODE_QUALITY_REQ = [

0 commit comments

Comments
 (0)