Попытка добавить контроль дроссельной заслонки для параллельных вызовов API в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Попытка добавить контроль дроссельной заслонки для параллельных вызовов API в Python

Сообщение Anonymous »

Я использую Google Place API, который имеет запрос в секунду предел 10 . Это означает, что я не могу сделать более 10 запросов в течение секунды. Если бы мы использовали последовательное выполнение, это не было бы проблемой, так как время отклика API AVG составляет 250 мс, поэтому я смогу сделать всего 4 вызовов за секунду.

Использовать весь предел 10 QPS я использовал MultiThreading и выполнил Parallel API. Но теперь мне нужно контролировать количество вызовов, которые могут произойти через секунду, оно не должно выходить за рамки 10 < /strong> (Google API начинает бросать ошибки, если я пересекаю предел) < /p>

Ниже приведен код, который я имею до сих пор, я не могу выяснить, почему программа просто застряла или требует дольше, чем необходимо.import time
from datetime import datetime
import random
from threading import Lock
from concurrent.futures import ThreadPoolExecutor as pool
import concurrent.futures
import requests
import matplotlib.pyplot as plt
from statistics import mean
from ratelimiter import RateLimiter

def make_parallel(func, qps=10):
lock = Lock()
threads_execution_que = []
limit_hit = False
def qps_manager(arg):
current_second = time.time()
lock.acquire()
if len(threads_execution_que) >= qps or limit_hit:
limit_hit = True
if current_second - threads_execution_que[0]

В идеале Код должен занять не более 1,5 секунды, но в настоящее время он занимает около 12-14 секунд.
Скрипт ускоряется до ожидаемой скорости, как только я удаляю логику менеджера QPS. коробка.

Подробнее здесь: https://stackoverflow.com/questions/593 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»