Je veux implémenter une commande qui peut arrêter une application flask en utilisant flask-script. J'ai cherché la solution pendant un certain temps. Parce que le framework ne fournit pas app.stop()
API, je suis curieux de savoir comment coder cela. Je travaille sur Ubuntu 12.10 et Python 2.7.3.
Savez-vous s'il existe un moyen d'obtenir la propriété "werkzeug.server.shutdown" sans avoir besoin d'un contexte de requête ?
0 votes
Pourquoi devez-vous être capable d'arrêter votre application à partir d'un script ? (Le meilleur outil pour ce travail dépend de ce que vous essayez de faire).
0 votes
Sérieusement, qu'est-ce que vous essayez de faire ici ? Si vous parlez de devserver pour le développement, il est tout à fait possible de l'arrêter comme ça. En production, on ne déploie pas comme ça et on peut arrêter une requête à n'importe quel moment, donc "l'application s'arrête de tourner".
0 votes
@SeanVieira Je voudrais savoir s'il existe des solutions pour faire cela.
0 votes
@IgnasB. Je développe actuellement un service RESTful sur ma machine. Je travaille sur un projet qui pourrait m'aider à choisir les machines à déployer. La seule façon que j'ai trouvée est d'arrêter le processus en le tuant.
3 votes
@vrootic, mais vous n'utiliserez pas app.run() en production de toute façon. app.run() est utilisé uniquement pour le développement et pour tester votre application pendant le développement. Il y a différentes façons d'exécuter Flask en production, d'autres peuvent être trouvées ici par exemple flask.pocoo.org/docs/quickstart/#deploying-to-a-web-server Et si vous avez déjà déployé quelque chose comme ça (donc j'ai mal compris la question), la façon d'arrêter de servir les requêtes qui arrivent à Flask est d'arrêter le serveur http qui les sert.
0 votes
@IgnasB. Merci beaucoup !
0 votes
Si vous souhaitez arrêter le serveur de manière programmatique, vous pouvez le tuer à l'aide de commandes shell telles que ps, grep et kill. Vous pouvez ensuite appeler le script depuis Python en utilisant la fonction os.system pour exécuter les commandes de l'interpréteur de commandes.