Ich habe einen Verbraucher für eine Zahlung API geschrieben. Mein Code gibt einfach eine POST-Anfrage aus und erhält eine Antwort von der API. Ich habe mit Net implementiert, dass :: HTTP, hier den entsprechenden Codezeilen sind:Net :: HTTP - Flush oder Schließen
http = Net::HTTP.new(uri.host, 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(params)
response = http.request(request)
Diese seit Jahren gearbeitet, aber in letzter Zeit einige Anfragen Timeouts haben erreicht, wenn der API unter Stress. Der API-Betreuer kam mit dieser Erklärung:
Wir übergeben die Daten an RabbitMQ synchron nach dem Löschen der HTTP-Antwort. Offenbar warten einige HTTP-Bibliotheken darauf, dass die Verbindung geschlossen wird, bevor das Programm auf der Verbraucherseite fortgesetzt wird, und wir denken, dass dies hier geschieht. Bitte konfigurieren Sie Ihren Benutzer neu, damit er nicht auf den Abschluss wartet, sondern direkt nach dem Zurücksetzen der Antwort fortfährt.
Ich bin mir nicht sicher, wie Net :: HTTP implementiert ist und ob es wirklich auf das Schließen wartet, wenn die Antwort gelöscht wurde. Die Dokumentation sagt nichts darüber, noch gibt es eine Einstellung, um dies zu kontrollieren. Und um das Ganze noch schlimmer zu machen, weiß ich nicht, wie ich das simulieren soll.
Alle Ideen sind sehr willkommen!