gpt4 book ai didi

Python3——突破包罗万象的 try block

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:56 24 4
gpt4 key购买 nike

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

我的问题是,我做到了吗?

我想做的是,如果收到某个请求(停止服务器请求,如果你愿意的话),则退出处理程序并退出服务器循环。最初,我试图通过抛出异常来打破服务器循环,但事实证明套接字服务器处理程序的运行方式是在“try catch-all Expect” block 内部,这意味着处理程序内部抛出的异常将不会发生。永远不会传播到处理程序调用函数之外(带有捕获所有异常 block 的函数)。

Python 是否有一个 longjump 机制,可以刺穿 try-catch_all-expect block ,或者我可以在线程内运行serve_forever_loop,然后从处理程序中执行类似 Thread.current.kill() 的操作吗? (我该怎么做?)。

最佳答案

据我所知,当引发异常时没有办法跳过堆栈帧。

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

关于Python3——突破包罗万象的 try block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29789182/

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