2012-03-02 69 views
4

我知道存在的框架,但我試圖直接使用wsgi來提高我自己的理解。Python和Apache中的全局變量mod_wsgi

我有我的wsgi處理程序,並在頂部我宣佈變量i = 0

在我的application(environ, start_response)函數中,我聲明global i,然後每當按下一個按鈕時我就增加i

這是我的理解,這個變量的狀態保存只要服務器在運行,所以Web應用程序的所有用戶看到相同的i

如果我在application函數中聲明i,則在任何時候發出請求時,i的值都會重置爲0。

我想知道,你如何保留i之間的單個用戶的請求,但沒有保存在不同用戶的會話?所以,一個用戶可以創建多個帖子,並且i將會增加,但是如果其他用戶訪問該網絡應用,他們將以i=0開頭。

而且我知道你可以將i存儲在數據庫之間的帖子,但是有可能在帖子之間的內存中保留i

+2

對於一些相關的背景閱讀,看http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading更相關的部分是朝結束,但仍讀上下文都非常的重要。 – 2012-03-02 22:49:36

回答

3

網絡應用通常是「無共享」的。在WSGI的情況下,這意味着你不知道你的應用程序(和它的計數器)將被實例化多少次;該選擇取決於作爲應用程序容器的WSGI服務器。

如果希望用戶會話的一些概念,你必須明確地實現它,通常在餅乾上。如果你想持久化,你需要一個明確支持它的組件;可以是共享數據庫,也可以背上你的cookie會話。