フラスコを使用してPythonで実装されたレストサーバーがあります。そして、再起動するAPIntpd
を実装します。
コード test_flask.py:
from flask import Flask
import subprocess
import logging
import sys
app = Flask(__name__)
def run_shell_cmd(cmd):
logging.info("run cmd: %s", cmd)
try:
rc = subprocess.call(cmd, shell=True)
if rc != 0:
logging.error("Fail to run %s , rc: %s" % (cmd, rc))
except OSError as e:
logging.error("Fail to run cmd: %s" % e)
return rc
@app.route("/restart_ntpd")
def restart():
run_shell_cmd("service ntpd restart")
return "Success!"
if __name__ == "__main__":
LOG_FORMAT = '%(asctime)s, %(levelname)s, %(filename)s:%(lineno)d, %(message)s'
logging.basicConfig(
format=LOG_FORMAT,
level=logging.INFO,
stream=sys.stdout,
)
app.run()
次に、次のように操作しました。
- フラスコサーバーを起動します: python test_flask.py
- curl " http://localhost:5000/restart_ntpd。次に ntpd を再起動して "success" を返す
- フラスコサーバーを停止します: Ctrl+c を使用して停止します
- フラスコ サーバーを再起動すると、例外が発生します。
socket.error: [Errno 98] アドレスは既に使用されています。
- use
sh $ netstat -ntlp | grep 5000
、ポートはによって deforced されましたntpd
はデフォルトでポート 123ntpd
を使用すると思います。私のシーンで、ポート 5000が強制解除されるのはなぜですか? フラスコの問題ですか?ntpd