当前位置: 首页 > 知识库问答 >
问题:

如何在不使用ctrl-c的情况下停止烧瓶应用

阙阳夏
2023-03-14

我想实现一个命令,该命令可以使用烧瓶脚本停止烧瓶应用程序。我已经寻找解决方案一段时间了。因为框架不提供 app.stop() API,所以我很好奇如何编写这个代码。我正在研究 Ubuntu 12.10 和 Python 2.7.3。

共有3个答案

黎浩然
2023-03-14

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

sudo netstat -tulnp | grep :5001

你会得到这样的东西。

tcp 0 0 0.0.0.0:5001 0.0.0.0:*LISTEN 28834/python

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

sudo kill 28834
骆磊
2023-03-14

我用线程做的略有不同

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')
    # App routes defined here
    server = ServerThread(app)
    server.start()
    log.info('server started')

def stop_server():
    global server
    server.shutdown()

我用它来对 restful api 进行端到端测试,我可以在其中使用 python 请求库发送请求。

潘安平
2023-03-14

如果您只是在桌面上运行服务器,则可以公开endpoint以终止服务器(在关闭简单服务器中阅读更多信息):

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()

让我知道这是否有帮助。

 类似资料:
  • 问题内容: 我想实现一个可以使用flask-script停止flask应用程序的命令。我已经搜索了一段时间。因为该框架不提供“ app.stop()” API,所以我对如何编写此代码感到好奇。我正在使用Ubuntu 12.10和Python 2.7.3。 问题答案: 如果您只是在桌面上运行服务器,则可以公开终结点以终止服务器(有关更多信息,请参见Shutdown The Simple Server

  • 问题内容: 我想实现一个可以使用flask-script停止flask应用程序的命令。我已经搜索了一段时间。因为该框架不提供“ app.stop()” API,所以我对如何编写此代码感到好奇。我正在使用Ubuntu 12.10和Python 2.7.3。 问题答案: 如果仅在桌面上运行服务器,则可以公开终结点以终止服务器: 这是另一种包含更多的方法: 让我知道是否有帮助。

  • 问题内容: 我有一个使用线程并发出大量HTTP请求的python脚本。我认为正在发生的事情是,正在读取HTTP请求(使用urllib2)时,它正在阻塞并且没有响应以停止程序。有没有办法解决? 问题答案: 在Windows上,唯一确定的方法是使用。立即停止每个python脚本! (请注意,在某些键盘上,“中断”被标记为“暂停”。)

  • 我正在用laravel建立一个网站,我想调试我的程序,但很难使用dd(),因为它会立即停止程序,我想让它显示每执行一行,任何想法?任何帮助将不胜感激,谢谢。

  • 问题内容: 我有以下代码: 在发生某些事件之后,我应该停止在的方法中声明的操作,该方法实现。 我怎样才能做到这一点?我无法关闭执行器,只能撤消我的定期任务。我可以用吗?如果可以的话,请告诉我它将如何工作。 问题答案: 使用。该是你的任务的处理。您需要取消此任务,它将不再执行。 实际上,是签名,并将其与参数一起使用将导致当前正在运行的执行线程被调用中断。如果线程在阻塞的可中断调用(例如)中等待,则会

  • 问题内容: 我试图用一个烧瓶形式的sqlalchemy请求的结果填充选择字段。 这是代码: 这是模板: 查看: 模型(仅粘贴了关联表和作者表,很多列都不用了) 我目前收到此错误: 我真正想要的是,选择字段显示作者姓名及其编号,然后将作者编号返回至应用程序(返回至位于头的名为“ add_author”的函数)。 谢谢。 问题答案: 您有两个问题: 正如肖恩·维埃拉(Sean Vieira)在回答中指

  • 我一直在玩流,然后我注意到当我执行以下操作时,它不会在控制台中产生输出: 我认为这是因为是一个非终止流方法,应该使用而不是来终止流并生成结果: 然而,是否有一种方法可以‘提前’终止流,使用一个自定义的终止方法(函数接口),它除了终止流之外什么都不做?..有没有一个适当的方法来利用Java现有的东西来做到这一点? 我知道我可以这样做: 但那感觉很浪费。

  • 问题内容: 我希望在不停止应用程序的情况下分析Java应用程序。我可以在应用程序运行时以某种方式添加Javaagent吗? 问题答案: 根据java.lang.instrument软件包的文档,应该是可能的。 VM启动后启动代理 一个实现可以提供一种机制,可以在VM启动之后的某个时间启动代理。有关如何启动的详细信息是特定于实现的,但通常应用程序已启动并且其主要方法已被调用。在虚拟机启动后实现支持启