È possibile in qualche modo passare attraverso la limitazione keepalive di uwsgi? In caso contrario, qual è il modo migliore di implementazione della connessione persistente. Sto usando NGiNX + uWSGI (Python) e voglio che i client abbiano aggiornamenti asincroni dal server.uWSGI keepalive
risposta
Stai parlando di due cose diverse. Se desideri connessioni persistenti dai tuoi clienti alla tua app, potresti voler utilizzare le modalità asincrone (tramite ugreen, gevent ...). In questo modo sarai in grado di mantenere migliaia di connessioni simultanee. Keepalive è un modo per instradare più richieste alle stesse connessioni, ma questo è abbastanza inutile per il tuo scopo. Invece, se ti riferisci a connessioni persistenti tra nginx e uWSGI, non c'è modo (al momento) in nginx di raggiungere tale comportamento. Si consiglia di seguire questo biglietto:
http://projects.unbit.it/uwsgi/ticket/66
si tratta del fastrouter, ma sarà applicata in httprouter troppo. Ma è ancora in fase di forte sviluppo.
No, non è possibile, perché uwsgi basato su SCGI e chiude le prese dopo ogni richiesta. Utilizzare invece FastCGI.
UWSGI supporta keep-alive tramite l'opzione --http-keepalive se si ricevono richieste tramite http.
/tmp$ cat app.py
def application(env, start_response):
content = b"Hello World"
start_response('200 OK', [
('Content-Type','text/html'),
('Content-Length', str(len(content))),
])
return [content]
Run con:
/tmp$ uwsgi --http=:8000 --http-keepalive -w app &> /dev/null
e possiamo vedere connect
chiamate tramite strace:
~$ strace -econnect wrk -d 10 -t 1 -c 1 http://127.0.0.1:8000
connect(3, {sa_family=AF_INET, sin_port=htons(8000), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
Running 10s test @ http://127.0.0.1:8000
1 threads and 1 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 92.32us 56.14us 2.81ms 97.20%
Req/Sec 11.10k 389.34 11.84k 68.32%
111505 requests in 10.10s, 7.98MB read
Requests/sec: 11040.50
Transfer/sec: 808.63KB
+++ exited with 0 +++
Vedi? Solo una connessione.
- 1. uwsgi + django via Nginx - impostazioni uwsgi/spawn?
- 2. Nginx TCP (WebSockets) Timeout/Keepalive Config
- 3. uso corretto di KeepAlive in Apache .htaccess
- 4. uWSGI + nginx per progetto django, errore con stringhe uwsgi
- 5. Impossibile avviare uwsgi processo
- 6. uwsgi http è ambiguo
- 7. come uccidere processo uWSGI
- 8. Django uwsgi import error
- 9. Filettatura Python3 con uWSGI
- 10. uwsgi IOError: scrivere errore
- 11. WSGI vs uWSGi con Nginx
- 12. uwsgi: opzione non riconosciuta '--https'
- 13. gestione di uWSGI con Upstart
- 14. Come eseguo uwsgi con virtualenv
- 15. Impossibile installare uwsgi su Alpine
- 16. uwsgi upstart su amazon linux
- 17. Soluzione keepalive per Android http, ma è permanente?
- 18. middleware grunt-contrib-connect Soluzione CORS con keepalive true
- 19. Determinare se le connessioni esistenti utilizzano TCP KeepAlive in Windows
- 20. HTTP persistente/keepalive con la libreria PHP Curl?
- 21. Come cambiare il timer keepalive tcp usando lo script python?
- 22. Errore durante l'installazione di uWSGI su mac
- 23. Python: configurazione uWSGI per Nginx + BOCCETTA
- 24. processi server multipli utilizzando nginx e uWSGI
- 25. Flask, Nginx, uWSGI Python Applicazione non trovata
- 26. Come montare l'app Django con uwsgi?
- 27. nginx + uwsgi: - modificatore non disponibile richiesto: 0 -
- 28. uWSGI - Differente timeout Harakiri per Django Admin
- 29. Logstash Filtro Grok per i registri uwsgi
- 30. Django + uWSGI tramite NGINX su Ubuntu 11.10
L'opzione '-c 1' imposta la quantità di connessioni attive contemporaneamente, ma non è necessario funziona in modalità keep-alive: https://github.com/wg/wrk/blob/91655b5520b524fc0b802ad12220c9dcd546757e/src/http_parser.c#L2123 . UWSGI aggiunge 'Connection: close' ad ogni risposta. Ma questo strumento 'uwsgi' potrebbe funzionare in modalità keep-alive per soluzione temporanea se la dimensione del contenuto è nota: http://uwsgi-docs.readthedocs.io/en/latest/HTTP.html?highlight=keep-alive#http-keep -vivo. Ad ogni modo, la tua domanda riceve molte richieste separate. – DenisKolodin
@DenisKolodin > ma non è necessario funziona in modalità keep-alive 'wrk' utilizza http/1.1 quindi keep-alive è una modalità predefinita. Lo stesso test con strace e 'ab' mostra' connect' su ogni richiesta. > Ma questo strumento uwsgi potrebbe funzionare in modalità keep-alive per soluzione temporanea se la dimensione del contenuto è nota Non è una soluzione alternativa. È un comportamento documentato) La maggior parte dei framework wsgi imposta il Content-Length corretto. – bav