Python 如何在Flask SocketIO的后台任务中从另一个文件运行函数
我正在使用Flask SocketIO开发一个用于人脸识别的Flask应用程序。我想在后台启动face_recognition应用程序,当一个人被识别时,它将从服务器向JS客户端发送这个名字。在app.py文件中导入face_rec.py文件时,出现以下错误。 错误:Python 如何在Flask SocketIO的后台任务中从另一个文件运行函数,python,flask,flask-socketio,Python,Flask,Flask Socketio,我正在使用Flask SocketIO开发一个用于人脸识别的Flask应用程序。我想在后台启动face_recognition应用程序,当一个人被识别时,它将从服务器向JS客户端发送这个名字。在app.py文件中导入face_rec.py文件时,出现以下错误。 错误: Using TensorFlow backend. Server initialized for gevent. Traceback (most recent call last): File "E:/Innovo/
Using TensorFlow backend.
Server initialized for gevent.
Traceback (most recent call last):
File "E:/Innovo/face_recog/Recoginition/app.py", line 77, in <module>
socketio.run(app)
File "C:\ProgramData\Anaconda3\lib\site-packages\flask_socketio\__init__.py", line 609, in run
monkey.patch_thread()
File "C:\ProgramData\Anaconda3\lib\site-packages\gevent\monkey.py", line 178, in ignores
return func(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\gevent\monkey.py", line 588, in patch_thread
_patch_existing_locks(threading_mod)
File "C:\ProgramData\Anaconda3\lib\site-packages\gevent\monkey.py", line 487, in _patch_existing_locks
if isinstance(o, rlock_type):
ReferenceError: weakly-referenced object no longer exists
import faceRec_wihtout_mask
from flask_socketio import SocketIO, emit
from flask import Flask, render_template, url_for
from random import random
from time import sleep
from threading import Thread, Event
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
app.config['DEBUG'] = True
#turn the flask app into a socketio app
socketio = SocketIO(app, async_mode=None, logger=True, engineio_logger=True)
thread = Thread()
thread_stop_event = Event()
def face_rec():
while not thread_stop_event.isSet():
faceRec_wihtout_mask.main('video')
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect',namespace='/test')
def test_connect():
# need visibility of the global thread object
global thread
print('Client connected')
if not thread.isAlive():
print("Starting Thread")
thread = socketio.start_background_task(face_rec)
@socketio.on('disconnect', namespace='/test')
def test_disconnect():
print('Client disconnected')
if __name__ == '__main__':
socketio.run(app)