Использование переменной класса Python в разных потоках имеет разное значение

Я запутался в доступе к переменным класса через многопоточность. У меня django приложение и я инициализирую класс при запуске сервера, чтобы внедрить некоторую конфигурацию. Затем при запросе пользователя я вызываю некоторый метод на этом классе, но конфигурация None.

class SharedService:
    _queue_name = None

    @staticmethod
    def config(queue_name=None):
        if queue_name:
            SharedService._queue_name = queue_name
        print(SharedService._queue_name)    # this print the "alert"

    @staticmethod
    def send_message(data):
        print(SharedService._queue_name)    # this print None should print "alert"

если полезно в классе настроек django, загружаемом при запуске, я делаю:

SharedService.config(queue_name="alert")

и в конечной точке пользователя я просто вызываю:

SharedService.send_message("blabla")

Я уверен, что раньше это работало, но мы недавно обновили python 3.10 и django 3.2, и это может быть связано (или нет!)

Ок, это было полностью из внешнего поля!

Общий сервис взят из внешней библиотеки и фактически может быть импортирован из двух путей из-за ошибок в нашем пути к python.

В файле настроек я делал

from lib.services import SharedService

Из кода обработки запросов

from services import SharedService

Что очевидно создает два разных определения класса и, таким образом, второе использование не инициализируется.

Вернуться на верх