繁体   English   中英

Python3 —突破了万能的尝试块

[英]Python3 — breaking out of a catch-all try block

我刚刚重写了类似于基本python服务器的内容( https://docs.python.org/3/library/socketserver.html ),因为我认为我需要这样做。

我的问题是,是吗?

我想要做的是,如果收到某个请求(如果需要,则停止服务器请求),从而脱离处理程序和服务器循环。 最初,我试图通过引发异常来打破服务器循环,但事实证明,套接字服务器处理程序的运行方式位于“ try catch-all Expect”块内,这意味着引发处理程序内部的异常不会永远不会传播到处理程序调用功能之外(带有全部捕获异常块的功能)。

那么python是否具有长跳机制可以刺穿try-catch_all-expect块,或者我可以在线程内运行serve_forever_loop,然后从处理程序中执行类似Thread.current.kill() (我该怎么做? )。

据我所知,在引发异常时无法跳过堆栈帧。

但是,如果您确实需要此功能,则可以找到代码的一部分将消息发送到另一部分的其他方法。 如果处理程序和服务器都在同一个解释程序实例中运行(即不在单独的线程中),则可以使处理程序更改主服务器循环可访问的一些变量,服务器循环将对其进行检查。 如果您使用的是不同的解释器,则可以使处理程序写入服务器循环监视的日志文件。 日志文件的想法有点怪异,但无论如何,对服务器而言,日志记录是一件好事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM