jukrapopk commited on
Commit
84f1606
·
1 Parent(s): d4a39d3

test: create thread on endpoint

Browse files
Files changed (1) hide show
  1. 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 = False
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)