Как установить глобальную переменную в фляге Python?
Я хотел бы установить глобальную переменную и использовать ее в качестве триггера различных функций. У каждого пользователя есть отдельная глобальная переменная. Это используется для отслеживания предыдущих данных сообщения и продолжения разговора. Проблема в том, как я могу управлять отдельной глобальной переменной для каждого пользователя? Приложение работает, как только я развернул его на сервере. Когда я пытаюсь изменить глобальную переменную, эта переменная применяется ко всем пользователям, а не только к тому, кто инициировал это изменение.
Я использую колбу Python без БД.
Спасибо.
2 ответа
Для этого вам не нужны глобальные переменные, и, по правде говоря, они вам не понадобятся в будущем, так как использование глобальных переменных - плохая практика. Обратитесь к этой ссылке для деталей, почему глобальные переменные являются злыми?
Теперь, перейдя к вашей проблеме, вам, вероятно, нужно g
модуль фляги, который создает контекст, который сохраняется по нескольким запросам от одного и того же пользователя. Вы можете сделать что-то вроде этого:
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"}