我想設置一個全局變量,並把它作爲各種功能的觸發器。每個用戶都有一個單獨的全局變量。這用於跟蹤以前的消息數據並進行對話。問題是如何爲每個用戶管理一個單獨的全局變量?應用程序在我將其部署到服務器後運行。當我嘗試更改全局變量時,此變量適用於每個用戶,而不僅僅是觸發其更改的單個用戶。如何在python燒瓶中設置一個全局變量?
我使用python瓶沒有DB。
謝謝。
我想設置一個全局變量,並把它作爲各種功能的觸發器。每個用戶都有一個單獨的全局變量。這用於跟蹤以前的消息數據並進行對話。問題是如何爲每個用戶管理一個單獨的全局變量?應用程序在我將其部署到服務器後運行。當我嘗試更改全局變量時,此變量適用於每個用戶,而不僅僅是觸發其更改的單個用戶。如何在python燒瓶中設置一個全局變量?
我使用python瓶沒有DB。
謝謝。
你並不需要一個全局變量,這和真正地說,你將來不需要它們,因爲使用全局變量是一種不好的做法。請參閱此鏈接的詳細信息,why are global variables evil?
現在來到您的問題,您可能需要g
flask的模塊,它會創建一個上下文,該上下文會持續來自同一用戶的多個請求。你可以做這樣的事情:
from flask import g
...
def get_messages():
messages = getattr(g, '_messages', None)
if messages is None:
g._messages = [] # to store messages you may use a dictionary
return g._messages
def add_message(message):
messages = get_messages()
messages.append(message)
setattr(g, '_messages', messages)
return messages
記住了創建應用程序的不同的線程,因此無論是變量共享的每個用戶,也沒有他們的價值觀。因此,對於每個用戶都會有一個不同的g
,但它會持續了來自同一用戶的多個請求。希望能幫助到你!
謝謝!這完美地解決了我的問題。 –
不客氣! –
不知道如果我正確理解你的問題,但也許你可以創建一個全球性的詞典與鍵作爲用戶名和值的消息。
所以每次要更新在字典中的變量,您可以根據用戶名(字典的鍵)訪問各自的變量
userMsg = {"John":"hello"} #existing user
# update John's msg
userMsg["John"] = "bye"
# now userMsg is {"John":"bye"}
# add new user if user does not exist
userMsg["Mary"] = "Your Message Here"
# now userMsg is {"John":"bye", "Mary":"Your Message Here"}
謝謝你的回答! –
「全球通」和「每用戶」是兩個完全不同的事情。 –
你應該尋找的關鍵詞是「會話」。 –