Une solution Python
Fonctionne avec : python kill_server.py
.
C'est pour Windows uniquement . Tue les serveurs avec taskkill, par PID, recueillis avec netstat.
# kill_server.py
import os
import subprocess
import re
port = 5000
host = '127.0.0.1'
cmd_newlines = r'\r\n'
host_port = host + ':' + str(port)
pid_regex = re.compile(r'[0-9]+$')
netstat = subprocess.run(['netstat', '-n', '-a', '-o'], stdout=subprocess.PIPE)
# Doesn't return correct PID info without precisely these flags
netstat = str(netstat)
lines = netstat.split(cmd_newlines)
for line in lines:
if host_port in line:
pid = pid_regex.findall(line)
if pid:
pid = pid[0]
os.system('taskkill /F /PID ' + str(pid))
# And finally delete the .pyc cache
os.system('del /S *.pyc')
Si vous avez des problèmes avec le chargement du favicon / des modifications de l'index.html (c'est-à-dire que les anciennes versions sont mises en cache), alors Essayez "Effacer les données de navigation > Images et fichiers" dans Chrome. également.
En faisant tout ce qui précède, j'ai obtenu que mon favicon se charge enfin lors de l'exécution de mon application Flask.
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.