2017-02-06 2 views
0

J'ai une application Flask (Python) qui fonctionne sur Passenger, qui fonctionne parfaitement lorsque je la teste et que je suis le seul utilisateur.Python Flask sur Passenger ne peut pas traiter un petit nombre de demandes simultanées

Mais dès que j'essaie d'avoir plusieurs connexions simultanées, chaque client attend toujours une réponse. Je l'ai essayé avec 50 utilisateurs simultanés, ce qui semble être facile à supporter. L'application est très simple, lire et écrire dans une base de données SQLite une ou deux fois. (Accès simultané de SQLite par ce petit nombre d'utilisateurs is not a problem.)

Qu'est-ce qui me manque?

+0

Vous allez devoir donner plus d'informations sur la façon dont il est servi. sqlite est peu susceptible d'être le goulot d'étranglement; combien de processus/threads utilise-t-il? –

+0

@DanielRoseman merci pour votre commentaire. Je pense que j'ai trouvé [ma réponse] (http://stackoverflow.com/a/42069933/2071807) (bien qu'il soit difficile de tester jusqu'à ce que j'ai 50 autres utilisateurs pour l'essayer.) Je voulais poster ceci parce que j'avais de la difficulté pour obtenir de l'aide via Google. – LondonRob

Répondre

0

Dans le Passenger docs il fait la suggestion suivante:

passagers prend également en charge le fichier magic 'tmp/always_restart.txt'. Si ce fichier existe, Passenger redémarrera votre application après chaque demande . De cette façon, vous n'avez pas besoin d'appeler la commande de redémarrage souvent.

Activez ce mécanisme en créant le fichier:

$ mkdir -p tmp

$ touch tmp/always_restart.txt

C'est idéal pour le développement, car cela signifie que vous avez seulement besoin de sauvegarder vos fichiers Python pour la dernière version du application à être disponible pour les clients.

Mais c'est terrible pour la production car chaque client fait sa propre demande et redémarre l'application Python. Il s'agit d'un surcoût très important pour le serveur, les utilisateurs risquent donc d'être dépassés avant de recevoir une réponse.

Supprimez le fichier tmp/always_restart.txt et vos limites de concurrence augmenteront.