Как писать в глобальную переменную (или синглтон) внутри запросов aiohttp или flask
Я пытаюсь записать в глобальный объект из запроса фляги. Я знаю, что в таком сценарии не рекомендуется использовать глобальные переменные, но я меняю состояние для выполнения некоторых тестов. Я не хочу использовать какое-либо решение для кеш-памяти, например, pickledb.
Я пробовал несколько подходов, но ни один из них не увенчался успехом. Также я пытаюсь понять, почему одноэлементное решение не работает, например
class Singleton:
foo = 'bar'
...
@app.RestApi.service.route('/test/endpoint1')
def endpoint1():
singleton_instance = Singleton.get_instance()
singleton_instance.foo='not bar'
print("Endpoint1 was called.")
В какой-то момент я вызываю endpoint1: s = Singleton.get_instance() s.foo='bar'
#CALL ENDPOINT1 HERE USING URLLIB ....
time.sleep(10) #enough time to sync !!
И теперь, если я получу s.foo, это не будет "не бар". вместо этого он не изменится!
Есть идеи, почему??
Спасибо
1 ответ
Обновление: я использовал процессы вместо потоков где-то в моем коде, не замечая. Контекст был разветвлен, поэтому фляга работала в другом процессе, чем экземпляр python, в котором я получал этот вывод.