gpt4 book ai didi

python - Bottle web 框架 - 如何停止?

转载 作者:IT老高 更新时间:2023-10-28 20:46:30 24 4
gpt4 key购买 nike

在没有线程或子进程的情况下启动 Bottle 网络服务器时,没有问题。退出 Bottle 应用程序 -> CTRL + c.

在一个线程中,我如何以编程方式停止 Bottle 网络服务器?

我没有在文档中找到 stop() 方法或类似的方法。有什么原因吗?

最佳答案

对于默认(WSGIRef)服务器,这是我所做的(实际上这是 Vikram Pudi 建议的更清洁的方法):

from bottle import Bottle, ServerAdapter

class MyWSGIRefServer(ServerAdapter):
server = None

def run(self, handler):
from wsgiref.simple_server import make_server, WSGIRequestHandler
if self.quiet:
class QuietHandler(WSGIRequestHandler):
def log_request(*args, **kw): pass
self.options['handler_class'] = QuietHandler
self.server = make_server(self.host, self.port, handler, **self.options)
self.server.serve_forever()

def stop(self):
# self.server.server_close() <--- alternative but causes bad fd exception
self.server.shutdown()

app = Bottle()

@app.route('/')
def index():
return 'Hello world'

@app.route('/stop') # not working from here, it has to come from another thread
def stopit():
server.stop()

server = MyWSGIRefServer(port=80)
try:
app.run(server=server)
except:
print('Bye')

当我想从另一个线程停止 Bottle 应用程序时,我执行以下操作:

server.stop()

关于python - Bottle web 框架 - 如何停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11282218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com