Я, выполняя следующий код Python, но когда я запускаю много потоков удаленный API (Google API) возвращает:Python многопоточный в блоке
<HttpError 403 when requesting https://www.googleapis.com/prediction/v1.6/projects/project/trainedmodels/return_reason?alt=json returned "User Rate Limit Exceeded">
У меня есть около 20K объекты, которые мне нужно запустить в время обработки API. Это отлично работает с небольшим количеством объектов, как замедлить или отправить запрос блоками?
from threading import *
collection_ = []
lock_object = Semaphore(value=1)
def connect_to_api(document):
try:
api_label = predictor.make_prediction(document)
return_instance = ReturnReason(document=document) # Create Return Reason Object
lock_object.acquire() # Lock object
collection_.append(return_instance)
except Exception, e:
print e
finally:
lock_object.release()
def factory():
"""
:return:
"""
list_of_docs = file_reader.get_file_documents(file_contents)
threads = [Thread(target=connect_to_api, args=(doc,)) for doc in list_of_docs]
[t.start() for t in threads]
[t.join() for t in threads]
Используйте ThreadPool. Ваш запрос является стандартной задачей, в этом нет ничего особенного. –