#python
#python
Вопрос:
Я пытаюсь собрать проект, состоящий из нескольких файлов Python. Вызывается первый файл «startup.py «и просто отвечает за открытие соединений с несколькими маршрутизаторами и коммутаторами (каждое устройство разрешает только одно соединение одновременно) и сохраняет их в списке. Этот скрипт должен выполняться постоянно, чтобы другие файлы могли его использовать
#startup.py
def validate_connections_to_leaves():
leaves = yaml_utils.load_yaml_file_from_directory("inventory", topology)["fabric_leaves"]
leaves_connections = []
for leaf in leaves:
leaf_ip = leaf["ansible_host"]
leaf_user = leaf["ansible_user"]
leaf_pass = leaf["ansible_pass"]
leaf_cnx = junos_utils.open_fabric_connection(host=leaf_ip, user=leaf_user, password=leaf_pass)
if leaf_cnx:
leaves_connections.append(leaf_cnx)
else:
log.script_logger(severity="ERROR", message="Unable to connect to Leaf", data=leaf_ip, debug=debug,
indent=0)
return leaves_connections
if __name__ == '__main__':
leaves = validate_connections_to_leaves()
pprint(leaves)
#Keep script running
while True:
time.sleep(10)
теперь я хочу повторно использовать эти открытые соединения в другом файле (ах) python без необходимости устанавливать соединения снова. если я просто импортирую его в другой файл, он повторно выполнит сценарий запуска еще раз.
кто-нибудь может помочь мне определить, какую часть я здесь упускаю?
Ответ №1:
Вы должны рассматривать свой startup.py
файл как точку входа, где находится вся логика. Вы должны импортировать другие файлы и использовать их внутри этого файла.
import otherfile1
import otherfile2
# import other file here
def validate_connections_to_leaves:
# ...
if __name__ == '__main__':
leaves = validate_connections_to_leaves()
otherfile1.do_something_with_the_connection(leaves)
#Keep script running
while True:
time.sleep(10)
И в вашем другом файле это будет просто:
def do_something_with_the_connection(leaves):
# do something with the connections
Комментарии:
1. Кажется, это работает. Однако я ищу способ обмена объектами между файлами
2. Вероятно, в этом случае вам следует создать новый вопрос.