0

Ich habe Groovy-Skript, das eine Menge Aufrufe an meine API senden muss. Ich bin mit einem HTTP-Client für alle Anrufe - for best performanceHttpClient wird nach jeweils 100 Aufrufen "reinitialisiert"

Es mein Code:

httpClient = new HttpClient() 
def start = new Date().getTime() 
def i = 0 

for (item in items) { 
    post(item) 
    def spend = new Date().getTime()- start // usual call takes 100-300 miliseconds 
    start = new Date().getTime() 

    if(spend>1000){ 
    logger.debug i 
    } 
    ++i 
} 

def post(item){ 
    def httpMethod = new PostMethod(endpoint) 
    httpMethod.setRequestHeader(new Header("Content-Type", "application/json")) 
    httpMethod.setRequestHeader(new Header("Host", AWS.Host)) 
    httpMethod.setRequestHeader(new Header("x-amz-date", amzDate)) 
    httpMethod.setRequestHeader(new Header("Authorization", authorizationHeader)) 
    def requestEntity = new StringRequestEntity(item, "application/json", "UTF-8") 
    httpMethod.setRequestEntity(requestEntity) 
    def statusCode = httpClient.executeMethod(httpMethod) 
    httpMethod.releaseConnection() 
    return statusCode >= 200 && statusCode < 300 
} 

Dieser Code für mich gedruckt:

DEBUG: 0 : 1504 
DEBUG: 100 : 1389 
DEBUG: 200 : 1177 
DEBUG: 400 : 1200 
DEBUG: 500 : 1058 
... 

Wie ich richtig Httpclient erhalten, ist etwas während der ersten initialisieren Rufen Sie an und müssen Sie die gleichen Dinge nach jedem 100. Aufruf erneut initialisieren.

EDIT: Mein Code ruft Amazon API Gateway. Wenn ich die Methode in GET ändere und Google anrufe - wurde dieses Problem nicht reproduziert.

Kann diese Neuinitialisierung vermieden werden?

Antwort

1

Es ist derzeit nicht möglich, diese Neuinitialisierungskosten zu vermeiden.

API-Gateway schließt die Verbindung nach 100 Anfragen (Es wird Verbindung zurückgegeben: Schließen als einer der Antwortheader). Der Client muss die TCP-Verbindung wiederherstellen und einen vollständigen TLS-Handshake durchführen.

Ich bin von API Gateway, ich werde schauen, ob wir etwas dagegen tun können. Allerdings kann ich nichts versprechen.

UPDATE: Dies sollte jetzt weniger ein Problem sein. Die Anzahl wurde auf 1000 erhöht.

Verwandte Themen