-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathserve-script.py
More file actions
39 lines (27 loc) · 963 Bytes
/
serve-script.py
File metadata and controls
39 lines (27 loc) · 963 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python
import joblib
import os
from io import StringIO
import pandas as pd
import flask
from flask import Flask, Response
model_path = '/opt/ml/model'
model = joblib.load(os.path.join(model_path, "model.joblib"))
app = Flask(__name__)
@app.route("/ping", methods=["GET"])
def ping():
return Response(response="\n", status=200)
@app.route("/invocations", methods=["POST"])
def predict():
if flask.request.content_type == 'text/csv':
data = flask.request.data.decode('utf-8')
s = StringIO(data)
data = pd.read_csv(s, header=None)
response = model.predict(data.loc[0:1].values)
response = pd.DataFrame(response)
response = response.to_csv(header=False, index=False)
else:
return flask.Response(response='CSV data only', status=415, mimetype='text/plain')
return Response(response=response, status=200)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)