jtyoui.web.keras_web 源代码

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time    : 2019/8/1 13:10
# @Email  : jtyoui@qq.com
# @Software: PyCharm
import time
from flask import Flask, Response, send_file, request
import gevent
from gevent.pywsgi import WSGIServer
from gevent.queue import Queue

app = Flask(__name__)
subscriptions = []


[文档]@app.route('/health/', methods=['GET']) def health(): return '200 OK'
[文档]@app.route('/', methods=['GET']) def home(): return send_file('./test.html')
[文档]class ServerSentEvent(object): def __init__(self, data): self.data = data self.event = None self.id = None self.desc_map = { self.data: "data", self.event: "event", self.id: "id" }
[文档] def encode(self): if not self.data: return "" lines = ["%s: %s" % (v, k) for k, v in self.desc_map.items() if k] return "%s\n\n" % "\n".join(lines)
[文档]@app.route("/publish/epoch/end/", methods=['POST']) def publish(): payload = request.form.get('data') def notify(): msg = str(time.time()) for sub in subscriptions[:]: sub.put(payload) gevent.spawn(notify) return "OK"
[文档]@app.route("/subscribe/epoch/end/") def subscribe(): def gen(): q = Queue() subscriptions.append(q) try: while True: result = q.get() event = ServerSentEvent(str(result)) yield event.encode() except GeneratorExit: subscriptions.remove(q) return Response(gen(), mimetype="text/event-stream")
[文档]def remote_monitor(listener='localhost', port=9000): print(f'点击链接:http://{listener}:{port}\t') server = WSGIServer((listener, port), app) server.serve_forever()
if __name__ == '__main__': remote_monitor(listener='127.0.0.1')