La solution de @ sajid-siddiqi est techniquement correcte, mais gardez à l'esprit que le serveur WSGI intégré à Werkzeug (qui est emballé dans Flask et à quoi il sert app.run()
) n'est qu'à thread unique.
Installez un serveur WSGI pour pouvoir gérer le comportement multi-thread. J'ai fait un tas de recherches sur diverses performances du serveur WSGI . Vos besoins peuvent varier, mais si tout ce que vous utilisez est Flask , je vous recommande l'un des serveurs Web suivants.
Mise à jour (2020-07-25): Il semble que gevent a commencé à prendre en charge python3 il y a 5 ans, peu de temps après avoir commenté que ce n'était pas le cas, vous pouvez donc utiliser gevent maintenant.
Gevent
Vous pouvez installer gevent via pip avec la commande pip install gevent
ou pip3 avec la commande pip3 install gevent
. Les instructions pour modifier votre code en conséquence sont ici: https://flask.palletsprojects.com/en/1.1.x/deploying/wsgi-standalone/#gevent
meinheld
gevent est meilleur, mais de tous les benchmarks que j'ai examinés et qui impliquent des tests dans le monde réel, meinheld semble être le serveur WSGI le plus simple et le plus simple . (Vous pouvez également jeter un oeil à uWSGI si cela ne vous dérange pas une configuration supplémentaire.)
Vous pouvez également installer meinheld via pip3 avec la commande pip3 install meinheld
. À partir de là, regardez l'exemple fourni dans la source meinheld pour intégrer Flask : https://github.com/mopemope/meinheld/blob/master/example/flask_sample.py
* REMARQUE: De mon utilisation de PyCharm , la ligne est from meinheld import server
mise en évidence comme une erreur, mais le serveur fonctionnera, vous pouvez donc ignorer l'erreur.