Flask-SocketIO开发服务器可以正常工作,但在生产中会陷入无限循环

问题描述

我正在使用flask-SocketIO创建一个可在文件到达特定目录时更新GUI的应用程序。当在开发服务器上运行flask运行时(使用“ flask run”时),一切似乎都正常运行,但是当使用“ python main.py”时,则出现了问题。这是罪魁祸首的简化版本:

main.py

from flask import Flask
from flask_socketio import SocketIO
import watch

app = Flask(__name__)
socketio = SocketIO(app)

# the script that looks for new files
watch.watch()

@socketio.on('get stuff')
def receiveResponse():

    import time

    global new_item_arrived
    
    # pause here until a new item  has arrived
    while (new_item_arrived == False): 
        time.sleep(1)
       
    new_item_arrived = False

    # Do Stuff...

if __name__ == '__main__':
    socketio.run(app)

预期的行为是当新文件到达某个目录时,函数“做东西”。 我有一个正在运行的python看门狗脚本,正在寻找这些新文件。到达后,会将“ new_item_arrived”的值更改为true,这意味着receiveResponse可以转到函数的下一行。当没有新商品到达时,循环将继续等待其他商品到达。

因此,当我执行“ flask run”时,这很好用,但是当我执行“ python main.py”,并且有一个文件到达时,它只会陷入无限循环。之后,似乎甚至冻结了该端口或返回此错误内容

OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions

再次能够使用我的应用程序的唯一方法是重新启动整个计算机。

另外,我应该指出,我的应用程序确实还有其他使用SocketIO的功能,但为简单起见,我并未将其包括在内,并且它们都可以正常工作。不确定是否相关,但是我将eventlet用作服务器。

我可能正在做一些别人看不到的事情,但是有人可以帮忙吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)