我想通过flask-script实现一个停止flask应用程序的命令。我已经寻找了一段时间的解决方案。因为该框架不提供app.stop()应用程序接口,所以我很好奇如何编写代码。我正在开发Ubuntu 12.10和Python 2.7.3。
发布于 2013-06-12 04:47:14
如果你只是在台式机上运行服务器,你可以暴露一个端点来杀死服务器(在Shutdown The Simple Server上阅读更多):
from flask import request
def shutdown_server():
func = request.environ.get('werkzeug.server.shutdown')
if func is None:
raise RuntimeError('Not running with the Werkzeug Server')
func()
@app.get('/shutdown')
def shutdown():
shutdown_server()
return 'Server shutting down...'下面是另一种更受欢迎的方法:
from multiprocessing import Process
server = Process(target=app.run)
server.start()
# ...
server.terminate()
server.join()如果这有帮助,请告诉我。
发布于 2017-07-11 00:53:38
我使用线程做了一些细微的改变。
from werkzeug.serving import make_server
class ServerThread(threading.Thread):
def __init__(self, app):
threading.Thread.__init__(self)
self.server = make_server('127.0.0.1', 5000, app)
self.ctx = app.app_context()
self.ctx.push()
def run(self):
log.info('starting server')
self.server.serve_forever()
def shutdown(self):
self.server.shutdown()
def start_server():
global server
app = flask.Flask('myapp')
...
server = ServerThread(app)
server.start()
log.info('server started')
def stop_server():
global server
server.shutdown()我使用它对restful api进行端到端测试,在那里我可以使用python请求库发送请求。
发布于 2018-07-23 09:54:38
这是一个有点老的线程,但是如果有人正在实验、学习或测试基本的flask应用程序,从一个在后台运行的脚本开始,最快的停止它的方法是杀死在你运行应用程序的端口上运行的进程。注意:我知道作者正在寻找一种不会杀死或停止应用程序的方法。但这可能会对正在学习的人有所帮助。
sudo netstat -tulnp | grep :5001你会得到类似这样的东西。
tcp 0 0 0.0.0.0:5001 0.0.0.0:*监听28834/python
要停止应用程序,请终止进程
sudo kill 28834https://stackoverflow.com/questions/15562446
复制相似问题