2013-02-25 64 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

相關問題