2013-02-25 67 views
0

我试图在NGINX和uWSGI后面运行Django应用程序,但是datetime.today()返回从当今uWSGI服务器启动时的日期时间。 该应用的配置如下:Django应用程序uWSGI有错误的datetime.today()结果,显示开始日期

 

    <uwsgi> 
    <plugin>python</plugin> 
     <socket>127.0.0.1:3030</socket> 
     <chdir>/opt/ETS/bin</chdir> 
     <pythonpath>..</pythonpath> 
     <module>instance</module> 
    </uwsgi> 

为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同一台服务器上托管时

回答

5

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

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

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

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

+0

我不是在启动时调用它,而是从函数内调用 – tcarlander 2013-02-25 11:13:24

+0

@tcarlander:什么调用该函数?该函数的*结果*是否在模块加载时存储? – 2013-02-25 11:17:54

+0

谢谢,这解释了它。我仍然不明白为什么它在Apache WSGI上工作,而不是在uWSGI上工作,我想他们的运行方式不同。 – tcarlander 2013-02-26 04:45:40

0

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

+0

是的,我确定,日期保持不变,直到我重新启动uWSGI服务器。 – tcarlander 2013-02-26 04:40:41

相关问题