Spaces:
Sleeping
Sleeping
test: create thread on endpoint
Browse files- src/app.py +11 -3
src/app.py
CHANGED
@@ -7,10 +7,12 @@ import os
|
|
7 |
app = Flask(__name__)
|
8 |
PORT = int(os.environ.get("PORT", 5000))
|
9 |
|
|
|
|
|
10 |
latest_frame = None
|
11 |
lock = threading.Lock()
|
12 |
measured_fps = 0
|
13 |
-
show_fps =
|
14 |
|
15 |
def video_reader():
|
16 |
global latest_frame, lock, measured_fps
|
@@ -57,6 +59,8 @@ def video_reader():
|
|
57 |
|
58 |
def generate():
|
59 |
while True:
|
|
|
|
|
60 |
with lock:
|
61 |
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 50]
|
62 |
ret, jpeg = cv2.imencode(".jpg", latest_frame, encode_param)
|
@@ -67,6 +71,12 @@ def generate():
|
|
67 |
|
68 |
@app.route("/")
|
69 |
def video_feed():
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
return Response(stream_with_context(generate()), mimetype="multipart/x-mixed-replace; boundary=frame")
|
71 |
|
72 |
@app.route("/toggle_fps")
|
@@ -76,6 +86,4 @@ def toggle_fps():
|
|
76 |
return f"fps counter: {"on" if show_fps else "off"}", 200
|
77 |
|
78 |
if __name__ == "__main__":
|
79 |
-
t = threading.Thread(target=video_reader, daemon=True)
|
80 |
-
t.start()
|
81 |
app.run(host="0.0.0.0", port=PORT, threaded=True)
|
|
|
7 |
app = Flask(__name__)
|
8 |
PORT = int(os.environ.get("PORT", 5000))
|
9 |
|
10 |
+
instantiated = False
|
11 |
+
|
12 |
latest_frame = None
|
13 |
lock = threading.Lock()
|
14 |
measured_fps = 0
|
15 |
+
show_fps = True
|
16 |
|
17 |
def video_reader():
|
18 |
global latest_frame, lock, measured_fps
|
|
|
59 |
|
60 |
def generate():
|
61 |
while True:
|
62 |
+
if latest_frame is None:
|
63 |
+
continue
|
64 |
with lock:
|
65 |
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 50]
|
66 |
ret, jpeg = cv2.imencode(".jpg", latest_frame, encode_param)
|
|
|
71 |
|
72 |
@app.route("/")
|
73 |
def video_feed():
|
74 |
+
global instantiated
|
75 |
+
|
76 |
+
if not instantiated:
|
77 |
+
instantiated = True
|
78 |
+
threading.Thread(target=video_reader, daemon=True).start()
|
79 |
+
|
80 |
return Response(stream_with_context(generate()), mimetype="multipart/x-mixed-replace; boundary=frame")
|
81 |
|
82 |
@app.route("/toggle_fps")
|
|
|
86 |
return f"fps counter: {"on" if show_fps else "off"}", 200
|
87 |
|
88 |
if __name__ == "__main__":
|
|
|
|
|
89 |
app.run(host="0.0.0.0", port=PORT, threaded=True)
|