Email or username:

Password:

Forgot your password?
Top-level
Dima

@mo
Если первый вариант был таким
from main import rmq_connection
То новые значения rmq_connection не будут видны.

import main
....
print(main.rmq_connection)
Должен видеть новое значение.

7 comments
Мя :sparkles_lesbian:

@dima а хуй там, он даже так видит значение до инициализации :)

и да, оно там не меняется. Оно один раз лениво инициализируется, и уже после этого используется в нижележащих модулях
Просто для его инициализации нужен IO, а используется оно одно на всю программу (потому что установка соединения это относительно затратно, и поэтому в RabbitMQ есть свой уровень мультиплексирования — каналы)

Dima

@mo интересно, но не понятно, почему он видит старое значение.

Я стараюсь такие ситуации избегать или созданием объекта, который хранит состояние и передается кому надо, или избежанием присваивания

Вместо
def f():
global x = 1

Что-то типа

x = []
def f();
x.append(1)

Список это просто пример мутабельной структуры.

Мя :sparkles_lesbian:

@dima скорее всего, я на 90% уверена — он не может понять, что package.main это главный модуль. Поэтому он его импортирует как обычно, но функция инициализации при этом не вызывается

Мя :sparkles_lesbian:

@dima т.е там тупо два разных модуля main. Один как package.main, второй как __main__

Dima

@mo это загадка для меня. Тут надо код смотреть

Мя :sparkles_lesbian:

@dima если б я не была занята, я бы накидала MRE, но как нибудь потом.

Dima

@mo ок, у меня тоже дела

Go Up