send_file 似乎暂停了整个网络服务器,直到文件被发送

send_file seems to pause the whole web server until the file is sent

当我在媒体列表中的任何歌曲上按下播放时,它必须发送一个 send_file... 但是当 send_file 正在进行时,整个网站会冻结,这意味着如果这send_file 发生并且有人访问网站的主页,他们将等待 send_file 需要的时间。

这是我的代码:

@app.route('/getMedia/')
def getMedia():
    file = request.args.get('filename')

    def getReqFile(): 
        with open(f'./media/{file}', mode="rb") as file_like:
            yield from file_like 

    try:
        # send_file(f'./media/{file}', conditional=True, as_attachment=True)
        return Response(getReqFile())
    except FileNotFoundError:
        return 'The media you tried to view doesn\'t exist.'

我不确定如何更好地措辞,所以如果没有意义,我很抱歉。

尽管这部分通常被忽视,但可以让您抢先一步

if __name__=="__main__":
    app.run(threaded=True)

尽管您不应该完全依赖它。

带线程=真 SocketServer.ThreadingMixIn class

的实现

在新的不同线程中处理每个请求。服务器可用于同时处理请求的线程数完全取决于您的 OS 以及它对每个进程的线程数设置的限制。所以没有限制,或者更确切地说,线程限制取决于您的服务器功能。