如何解决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 举报,一经查实,本站将立刻删除。