Правильный способ получения информации из большого количества БД - PullRequest
1 голос
/ 18 марта 2019

Наша компания имеет множество баз данных MS SQL (более 130). Моя цель - получить несколько простых данных от каждого из них (на самом деле это просто значение типа int). Эта задача должна работать каждые 5 минут. Пока у меня есть следующий код:

values = {}

    for server in serversList:
        serverName = server.server_name
        database = server.db_name
        user = 'user'
        password = 'password'

        try:
            conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+serverName+';DATABASE='+database+';UID='+user+';PWD='+ password)       
            cursor = conn.cursor()
            cursor.execute('SELECT value FROM table')
            value = cursor.fetchval()
            values['serverName'] = value
            conn.close()

Общее время обработки составляет около 2,5-3 минут.

Как я могу оптимизировать это? Я пытался сделать это асинхронным, но MS SQL не поддерживает асинхронную работу. Может мне нужно использовать многопоточность? Я слышал, что не очень хорошо использовать многопоточность в Python.

...