Повторное использование открытого соединения с другим скриптом

#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. Вероятно, в этом случае вам следует создать новый вопрос.