脚本终止时释放Python Flask端口
问题描述:
我有一个使用HTTPS的Python Flask服务器。当我按CTRL-C终止时,列表程序仍在运行(我必须在shell中运行:sudo fuser 8080/tcp -k
来终止它)。我想要一个更好的方式来释放它。任何人都知道使用正确的Flask代码?脚本终止时释放Python Flask端口
import sys
import os
import signal
from flask import Flask, render_template, url_for, current_app, request
from OpenSSL import SSL
# Clean-up when press CTRL+C
def signal_handler(signal, frame):
# I want to release the port here
print('Clean-up')
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
context = SSL.Context(SSL.SSLv23_METHOD)
context.use_privatekey_file('server.key')
context.use_certificate_file('server.crt')
app = Flask(__name__)
@app.route("/<arg1>")
def route1(arg1):
return render_template("flask_page1.html", var1=arg1)
app.run(host="0.0.0.0", port=8080, debug=False, ssl_context=context)
的Python 2.7,树莓派运行Raspbian
答
我正是曾与瓶同样的问题,我终于结束了猴子修补socket
模块本身。添加后,您的进口:
# patch socket module
socket.socket._bind = socket.socket.bind
def my_socket_bind(self, *args, **kwargs):
self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
return socket.socket._bind(self, *args, **kwargs)
socket.socket.bind = my_socket_bind
我没有找到任何其他方式。
感谢mguijarr,但它没有为我工作。这可能是因为它适用于瓶子而不是瓶子。 – spiderplant0 2014-08-29 13:02:21
您之前是否添加过'import socket'?你收到错误信息还是只是失败? – mguijarr 2014-08-29 15:20:14
是的,我补充说。我没有得到任何错误。它似乎并没有工作。 – spiderplant0 2014-08-29 23:54:58