首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何不使用ctrl-c停止flask应用程序

如何不使用ctrl-c停止flask应用程序
EN

Stack Overflow用户
提问于 2013-03-22 11:55:26
回答 15查看 181.7K关注 0票数 142

我想通过flask-script实现一个停止flask应用程序的命令。我已经寻找了一段时间的解决方案。因为该框架不提供app.stop()应用程序接口,所以我很好奇如何编写代码。我正在开发Ubuntu 12.10和Python 2.7.3。

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2013-06-12 04:47:14

如果你只是在台式机上运行服务器,你可以暴露一个端点来杀死服务器(在Shutdown The Simple Server上阅读更多):

代码语言:javascript
复制
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...'

下面是另一种更受欢迎的方法:

代码语言:javascript
复制
from multiprocessing import Process

server = Process(target=app.run)
server.start()
# ...
server.terminate()
server.join()

如果这有帮助,请告诉我。

票数 174
EN

Stack Overflow用户

发布于 2017-07-11 00:53:38

我使用线程做了一些细微的改变。

代码语言:javascript
复制
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请求库发送请求。

票数 54
EN

Stack Overflow用户

发布于 2018-07-23 09:54:38

这是一个有点老的线程,但是如果有人正在实验、学习或测试基本的flask应用程序,从一个在后台运行的脚本开始,最快的停止它的方法是杀死在你运行应用程序的端口上运行的进程。注意:我知道作者正在寻找一种不会杀死或停止应用程序的方法。但这可能会对正在学习的人有所帮助。

代码语言:javascript
复制
sudo netstat -tulnp | grep :5001

你会得到类似这样的东西。

tcp 0 0 0.0.0.0:5001 0.0.0.0:*监听28834/python

要停止应用程序,请终止进程

代码语言:javascript
复制
sudo kill 28834
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15562446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档