Как писать в глобальную переменную (или синглтон) внутри запросов 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, в котором я получал этот вывод.

Другие вопросы по тегам