Я бы порекомендовал здесь использовать шаблон «Пул рабочих», чтобы ограничить количество одновременных вызовов HandleNewOffer
.
Модуль concurrent.futures
предлагает готовые реализации вышеупомянутого шаблона.
from concurrent.futures import ProcessPoolExecutor
def handler():
with ProcessPoolExecutor() as pool:
try:
conn = k.call('GET', '/api/').json() #connect
response = conn.call('GET', '/api/notifications/').json()
# collect notifications to process into a list
notifications = [n for n in response['data'] if n['contact']]
# send the list of notifications to the concurrent workers
results = pool.map(HandleNewOffer, notifications)
# iterate over the list of results from every HandleNewOffer call
for result in results:
print(result)
except Exception as err:
error= ('Error')
Send(error)
Эта логика будет обрабатывать столько предложений параллельно, сколько процессорных ядер у вашего компьютера.