Twitter Commençons par Qiita pour commémorer la réincarnation.
~~ Comme le titre l'indique, lorsque j'exécute Flask avec uWSGI @ HTTP, j'ai confirmé qu'il y a un beau délai de 1 seconde lors de la publication d'un fichier, donc je vais vous présenter la procédure de reproduction. ~~
Ceci est une spécification de curl
qui émet une requête avec l'en-tête ʻExpect: 100-continue` et attend 1 seconde pour vous demander si vous voulez publier le fichier sur le serveur. Il semble. [^ 1]
$ curl -v -s -XPOST -F file=@LICENSE localhost:5002
* Rebuilt URL to: localhost:5002/
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 5002 (#0)
> POST / HTTP/1.1
> Host: localhost:5002
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 1271
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------ebc5516179fb0a6c
>
* Done waiting for 100-continue
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 20
<
* Connection #0 to host localhost left intact
Took: 0:00:01.011157
Il est dit conforme à HTTP / 1.1. [^ 2]
uWSGI prend en charge la gestion de ʻExpect: 100-continue`, et il semble que vous devriez ajouter la ligne suivante au fichier ini. [^ 1]
http-manage-expect = 1
https://github.com/akeyhero/uwsgi-http-is-slow
Selon le référentiel ci-dessus
Je mène une expérience sur.
simplement
$ flask run --host=0.0.0.0
Quand a commencé avec.
uWSGI
http = 0.0.0.0:80
Lorsque vous avez commencé avec des paramètres qui incluent.
uWSGI
socket = /socket/uwsgi.sock
Lorsque vous avez commencé avec des paramètres qui incluent.
Flask==1.1.1
uwsgi==2.0.18
Les temps de réponse lors du POST d'un fichier à l'aide de curl
sont les suivants.
Ici, tant qu'il est confirmé, le fichier peut être n'importe quoi, donc j'utilise le fichier LICENSE
du référentiel.
Temps de réponse | |
---|---|
1.Flacon seul | 0.067 |
2. Flask w/ uWSGI @ HTTP | 1.063 |
3. Flask w/ uWSGI @ uwsgi | 0.062 |
Vous pouvez voir que le temps de réponse est juste une seconde plus lent que lorsque Flask est démarré avec uWSGI @ HTTP.
Cette fois, nous avons publié les données pour un essai, mais le temps de réponse sera presque le même quel que soit le nombre d'essais.
curl
, pas Flask
ou ʻuWSGI`. *~~ Flask seul ne cause pas ce phénomène, j'ai donc lancé un [problème] approprié (https://github.com/unbit/uwsgi/issues/2129) car uWSGI en était probablement la cause. Cependant, je ne sais pas si c'est à cause de Flask ou si cela est causé par une seule technique de combinaison. ~~
~~ Si vous avez des détails, veuillez nous en informer. : arc: ~~
J'ai été enseigné par un contributeur d'uWSGI. [^ 1] J'ai beaucoup appris.
Recommended Posts