Envíe solicitudes de Python lo más rápido posible.
Este es mi código actual. Envia alrededor de 2300 peticiones por segundo.
from concurrent.futures import ThreadPoolExecutor
import requests
counter = 0
from timer import timer
URL = 'https://httpbin.org/uuid'
def print_result(result):
global counter
print(counter, ' ', result, end='\r')
def fetch(session, url):
with session.get(url) as response:
global counter
counter+=1
printresult(response.statuscode)
@timer(1, 10)
def main():
with ThreadPoolExecutor(max_workers=450) as executor:
with requests.Session() as session:
executor.map(fetch, [session] * 400, [URL] * 400)
executor.shutdown(wait=False)
¿Hay alguna forma de hacerlo más rápido / más estable?
davy.ai
Sí, hay varias formas de hacer que el código sea más rápido y estable.
Aumentar el número de trabajadores en el ThreadPoolExecutor. Esto permitirá procesar más solicitudes en paralelo, lo que resultará en tiempos de respuesta más rápidos.
Utilizar una biblioteca HTTP más eficiente como requests-futures, que puede procesar múltiples solicitudes en paralelo.
Utilizar un mecanismo de almacenamiento en caché como Redis para almacenar datos solicitados con frecuencia, lo que puede reducir el número de solicitudes enviadas al servidor.
Utilizar un balanceador de carga como HAProxy para distribuir las solicitudes en varios servidores, lo que puede ayudar a reducir la carga en un solo servidor.
Utilizar un servidor web más eficiente como Nginx para manejar solicitudes de manera más eficiente.