【问题标题】:Django application uWSGI have wrong datetime.today() result, shows started dateDjango 应用程序 uWSGI 有错误的 datetime.today() 结果,显示开始日期
【发布时间】:2013-02-10 11:23:59
【问题描述】:

我正在尝试在 NGINX 和 uWSGI 后面运行 Django 应用程序,但遇到datetime.today() 返回从今天开始安装 uWSGI 服务器时的日期时间的问题。 该应用的配置如下:

python127.0.0.1:3030/opt/ETS/bin..实例模块>

uWSGI 的设置是默认设置,没有任何变化。

我怎样才能让日期时间重新开始工作?

澄清: 在访问 url 时在此函数中进行调用

def create_file_header(name, ext):
    return {'Content-Disposition': 'attachment; filename=%s-%s.%s' % (name, datetime.date.today(), ext) }

调用来自 urlpatten:

(r'^loading_details/basic2/$', ExpandedResource(ReadLoadingDetailHandler, authentication=authentication, headers=create_file_header('loading-details', 'csv')), FORMAT_CSV, "api_loading_details_basic_auth"),

当使用 Apache WSGI 托管在同一台服务器上时它可以工作

【问题讨论】:

    标签: python django uwsgi


    【解决方案1】:

    你确定不是错误的时区而不是 uWSGI 启动时间吗? uWSGI 不涉及 python 内部(除非在某些领域明确要求)。

    【讨论】:

    • 是的,我确定,在我重新启动 uWSGI 服务器之前,日期保持不变。
    【解决方案2】:

    如果您将datetime.date.today() 存储在全局模块中,它只会在服务器启动时执行一次。这不是服务器问题,而是您的代码有问题。

    如果您需要一个结果来显示今天的日期,您需要在需要今天的日期时调用datetime.date.today() 可调用对象,而不是在启动时。

    即使您要在函数中调用today(),如果该函数本身仅在模块加载时调用,它仍然只执行一次。

    URL 模式只生成一次headers 关键字参数不会在每次访问该 URL 时执行,而仅在模块加载时执行。您需要将创建 tha 标头移动到视图本身。

    【讨论】:

    • 我不是在启动时调用它,而是在函数中调用它
    • @tcarlander:那个函数叫什么?该函数的 result 是否存储在模块加载时?
    • 谢谢,这就解释了。我仍然不明白为什么它可以在 Apache WSGI 而不是 uWSGI 上运行,我想它们的运行方式不同。
    • 查看uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html 页面。它解释了 fork() 的用法(以及如何更改它)
    • @tcarlander:Apache 可能为您测试的每个 URL 启动了一个进程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2018-03-06
    • 1970-01-01
    • 2020-03-18
    • 2016-06-09
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多