stream - cherrypy 服务多个请求/每个连接

标签 stream zip cherrypy

我有这个代码 (即时压缩和流式传输)

@cherrypy.expose
def backup(self):
    path = '/var/www/httpdocs'
    zip_filename = "backup" + t.strftime("%d_%m_%Y_") + ".zip"

    cherrypy.response.headers['Content-Type'] = 'application/zip'
    cherrypy.response.headers['Content-Disposition'] = 'attachment; filename="%s"' % (zip_filename,)

    #https://github.com/gourneau/SpiderOak-zipstream/blob/3463c5ccb5d4a53fc5b2bdff849f25bae9ead761/zipstream.py
    return ZipStream(path)

backup._cp_config = {'response.stream': True}

我遇到的问题是,当我下载文件时,我无法浏览任何其他页面或发送任何其他请求,直到下载完成... 我认为问题是 cherrypy 一次/每个用户不能处理多个请求

有什么建议吗?

最佳答案

当您说“每个用户”时,您的意思是另一个请求可以进入不同的“ session ”并且允许它继续吗?

在这种情况下,您的问题几乎可以肯定是由于 cherrypy 中的 session 锁定引起的。您可以阅读更多关于它的信息 session code .由于默认情况下 session 解锁较晚,因此在备份仍在处理时,其他线程(连接)无法使用该 session 。

尝试在该处理程序的 _cp_config 中设置 tools.sessions.locking = 'explicit'。由于您没有向 session 写入任何内容,因此根本不锁定可能是安全的。

祝你好运。希望对您有所帮助。

关于stream - cherrypy 服务多个请求/每个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10534449/

相关文章:

Java 套接字流意外结束

c++ - 输出流中的函数调用优先级

video - 无论如何,是否可以完全在线保护视频?

java - 解压适用于 Mac OSX 的 Java 3D 文件

python - CherryPy 静默日志记录在 Windows 服务上不起作用

python - 从 CherryPy 提供 css 文件

python - 使用 Flask 和 CherryPy 提供静态文件

java - 通过集合进行迭代期间出现 ConcurrentModificationException

java - HTTP GET 检索压缩文件

arrays - 将目录读取为 []byte 而不压缩它