2017-07-12 2 views
1

Ich bin ziemlich neu zu erstellen Web-Services in Python. Ich habe einen Flask-Webdienst erfolgreich erstellt und mit Gunicorn ausgeführt (da Flasks eingebauter Server nicht für die Produktion geeignet ist). So laufe ich meine App (mit 4 Arbeiterknoten).Handle 1000 gleichzeitige Anfragen für Flask/Gunicorn Web-Service

gunicorn --bind 0.0.0.0:5000 My_Web_Service:app -w 4 

Das Problem ist, dass dies nur 4 Anfragen gleichzeitig behandelt. Ich möchte, dass es in der Lage ist, potenziell Tausende von Anfragen gleichzeitig zu bearbeiten. Soll ich Multithreading verwenden? Irgendwelche anderen Optionen/Vorschläge?

Antwort

1

Wenn Sie den Abschnitt Workers lesen, müssen Sie zu einem asynchronen Worker wechseln, der Tausende von Verbindungen verarbeiten kann, wenn Ihre Arbeit IO gebunden ist. Es wird nicht empfohlen, mehr Prozesse als CPUs zu verwenden.

+0

sicher! Ich werde es versuchen! – Swapnil

+1

Hallo, also habe ich versucht mit gevent Async-Arbeiter wie folgt: gunicorn --bind 0.0.0.0:5000 service: app -k gevent --arbeiter-verbindungen 1000 Dies funktioniert, aber es scheint immer noch eingehenden Anfragen der Reihe nach zu verarbeiten. Wenn ich zum Beispiel zwei Anfragen gleichzeitig übergebe und die Zeiten für jede Zeit protokolliere, beobachte ich, dass der Dienst eine Anfrage gleichzeitig bearbeitet und beginnt, eine weitere Anfrage zu bedienen, nachdem die erste erledigt ist. – Swapnil

+0

Verstehst du, wie gevent funktioniert? Welche Art von Anfrage antwortest du? Wie profilierst du deinen Server? – Daniel

Verwandte Themen