我有一个脚本,看起来像这样。我使用线程运行该函数。
from flask import Flask
from flask_socketio import SocketIO
import threading
import time
def start_process():
for i in range(50):
message = "Hello, world!"
socketio.emit('message', message)
print(f"Event triggered! {message}")
time.sleep(1)
app = Flask(__name__)
socketio = SocketIO(app, cors_allowed_origins="")
if __name__ == "__main__":
threading.Thread(target=start_process).start()
socketio.run(app, port=1120, debug=False)
如果使用上面的代码,它就可以工作。但实际上我的
start_process
函数在另一个文件中,比如说 process_module.py
。
我想从其他模块调用函数
start_process
并使用flask_socektio通过套接字发送消息。我已经尝试了一些方法,但仍然没有效果。如何让它发挥作用?
你的问题有点模糊,但这是我的尝试。
你的主要脚本
from flask import Flask
from flask_socketio import SocketIO
from process_module import start_process
import threading
app = Flask(__name__)
socketio = SocketIO(app, cors_allowed_origins="")
if __name__ == "__main__":
threading.Thread(target=start_process(socketio)).start()
socketio.run(app, port=1120, debug=False)
以及 process_module.py
import time
def start_process(socket):
for i in range(50):
message = "Hello, world!"
socket.emit('message', message)
print(f"Event triggered! {message}")
time.sleep(1)
解决方案基本上是将 socketio 作为参数传递给我们导入的外部文件中的 start_process 函数。