【问题标题】:Problem with web.py + mod_wsgi file uploadweb.py + mod_wsgi 文件上传问题
【发布时间】:2011-02-08 03:16:52
【问题描述】:

我正在开发一个用于上传文件的 web.py 应用程序,但我的部署确实存在问题。基本上我想给用户一个“上传百分比”,但是当部署在 mod_wsgi 上时,这似乎很混乱。主要上传是这样的:

out = open(path, 'wb', 1000)

    while (True):

        packet = fileU.file.read(1000)

        if not packet:

            break

        else:

            out.write(packet)
            sessions[code].progress += 1

    out.close()

'Session' 是一个全局字典,包含跟踪会话的对象。为了获取当前进度,我每秒通过来自客户端的 GET 请求获取给定会话的当前进度。

目前的问题是这仅适用于小型上传。似乎任何超过 100kb 的东西都不会增加进度变量。如果放置在循环之外(或在 read() 被调用之前)或文件非常小,则该值肯定会增加。

wsgi 是否有可能为更大的文件打开新线程,从而使我的全局计数器仅在上传线程本地?会不会是别的东西。

【问题讨论】:

    标签: python io mod-wsgi web.py


    【解决方案1】:

    您不能只为此使用全局字典。实际上很可能网络服务器正在使用单独的线程来服务以下请求,并且不能保证会话字典是相同的。尝试使用 web.py 中的 session 对象。它使用数据库或文件来存储可以跨不同线程或进程访问的数据。

    web.py session example

    【讨论】:

    • 是否可以在会话中存储自定义数据?而且我似乎无法找到您如何在给定用户的请求中检索会话。
    • 一个会话对象基本上都有一个dict接口,你应该可以存储任何你喜欢的数据。例如,如果您为一个请求设置 session[],您应该能够在另一个请求中检索 session[]。您可以或多或少将其视为真正全局字典。
    猜你喜欢
    • 2014-05-10
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2015-05-10
    • 2014-10-19
    相关资源
    最近更新 更多