Параллельные запросы API внутри цикла Database cursor.execute в Python 3.x - PullRequest
0 голосов
/ 13 марта 2019

У меня есть довольно простой скрипт, который просто извлекает записи из базы данных, выполняет цикл for для результатов и использует результаты для обращения к API.

Это, очевидно, занимает некоторое время, так как приходится ждатьрезультат запроса API на возврат и анализ перед переходом к следующей записи в базе данных.

Я ищу примеры того, как я мог бы выполнить 5-10 запросов API параллельно, вместо того чтобы ждать ихпроцесс 1 за один раз.

Пример кода:

import pypyodbc as p
import json


cnxn = p.connect('Driver=/usr/local/lib/libmsodbcsql.13.dylib;SERVER=127.0.0.1;UID=user;PWD=1234;DATABASE=test_DB;')

cursor = cnxn.cursor()
rows = cursor.execute("SELECT number from xyz")

for row in rows:
    try:
        print('row = %r' % (row,))
        number = row[0]

        # Some API Request will occur here that will utilize 'number'
        # I would like to do 5-10 API requests in parallel instead of waiting for the result before moving to the next DB record
        result = The JSON response of some API request
        print(result)
        parsed_json = json.loads(result)
        Value1 = parsed_json['Test']['Data']['Value1']
        Value2 = parsed_json['Test']['Data']['Value2']
        cnxnupdate = p.connect('Driver=/usr/local/lib/libmsodbcsql.13.dylib;SERVER=127.0.0.1;UID=user;PWD=1234;DATABASE=test_DB;')
        cursorupdate = cnxnupdate.cursor()
        row_count = cursorupdate.execute("UPDATE xyz SET Value1=?, Value2=? WHERE number=?",
                                         (Value1, Value2, number))
        cnxnupdate.commit()
        if row_count == 0:
            print("Warning: no row updated")
    except Exception as e:
        print("Error, moving on...")
        print(e)
...