小编gin*_*ger的帖子

Python:在'exec'环境中奇怪的"NameError:name ...未定义"

我有信心至少对Python的范围系统有一些基本的了解.现在我收到一个错误,遗憾的是到目前为止我甚至无法为复制编写好的代码片段.我尝试在一个新的小项目中重现它,但一切都按照我的预期运行: - /

我只能描述我的所作所为,并希望有人能够检测出一种模式并告诉我这里可能出现的问题.

起初有一个python文件x.py实现了一个类X.

在其他一些python文件中,有以下字符串:

code="""
...
from x import X
...
class Y(X): # does not crash here, ...
    def __init__(self):
        X.__init__(self) # ... but here
        ...
foo=Y()
"""
Run Code Online (Sandbox Code Playgroud)

您可以假设python能够找到该x模块.在某个地方,我尝试执行:

exec(code, globals(), locals())
Run Code Online (Sandbox Code Playgroud)

现在我得到了NameError.它告诉我,X当它试图调用它的构造函数时没有定义.它显然定义在上面几行.

如果我通过Y.__init__添加from x import X为第一行进行修改,则可以正常工作.但为什么我要在那里再次导入呢?

如前所述,实际代码更复杂,并且做了更多事情.在一个不幸的情况下,我的帖子甚至没有显示实际导致问题的部分.但也许你有一些一般的想法,如何才能得到这样的行为.

python python-3.x

7
推荐指数
2
解决办法
5236
查看次数

Poco::Net HTTPServer:如何检测断开连接的客户端?

我正在开发一个 http 服务器,作为我的 C++ 应用程序的一部分,基于 Poco::Net HTTP。它非常简单,使用Poco::Net::HTTPServer,然后Poco::Net::HTTPRequestHandler使用子类,实现void handleRequest(Poco::Net::HTTPServerRequest &req, Poco::Net::HTTPServerResponse &resp). 在这种方法中,进程可能会变得耗时,甚至在某些情况下可能会无休止地运行。

浏览器通过 ajax 请求 ( ) 从 Web 应用程序内部使用这些服务器XMLHttpRequest,有时还abort()通过这些请求(这会关闭连接?!)。

如何检测内部的这种情况handleRequest(...)以便停止处理?

顺便说一句:我确实需要这种流程。关于不同的、可能是异步的方式(例如传递数据)的建议将不起作用。如果 Poco 做不到,我就必须更换它。

文档和一些实验都没有Poco::Net::HTTPServerRequest帮助Poco::Net::HTTPServerResponse我。

c++ http poco-libraries

5
推荐指数
1
解决办法
831
查看次数

标签 统计

c++ ×1

http ×1

poco-libraries ×1

python ×1

python-3.x ×1