首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python,Asyncore和叉

Python,Asyncore和叉
EN

Stack Overflow用户
提问于 2009-11-11 04:48:14
回答 1查看 3.7K关注 0票数 2

首先,我将Twisted和SocketServer与ForkMixIn、ThreadMixIn结合使用,并尝试了“线程池”的接收。

但是,我想在Python中做一些特殊的工作。

一点点背景。以前,我用C写了一个简单的TCP deamon,它可以绑定到一个套接字上,并监听它,然后多次预叉X,然后直接将服务器饼传递给所有的分叉,每个人都会非常高兴地接受客户端。

我检查了基于“选择/轮询”的异步核心,我非常喜欢它。我唯一的烦恼是,我可以通过几次分叉来获得一个不受约束的CPU,以利用多cpu机器,并希望通过调度获得最好的结果。

我不能让它为我的生活工作。只有一个实例可以接受连接,其他所有实例都只是在处理连接时抛出一个异常,“不能通过空迭代”。

这是否可行呢?我检查了很多,但是找不到任何分叉异步核心调度程序的代码(哭泣)。

谢谢!

更新1:(根据请求进行全面跟踪)

代码语言:javascript
复制
error: uncaptured python exception, closing channel <__main__.EchoServer listening 0.0.0.0:8001 at 0x2ad4880c93f8> (<type 'exceptions.TypeError'>:'NoneType' /python2.6/asyncore.py|readwrite|99] [/usr/local/python2.6.9/lib/python2.6/asyncore.py|handle_read_event|408] [./6py-server.py|handle_accept|87])

总是发生在接受中,不管我是否在asyncore.loop之前叉,等等。

更新2:(完整源代码) 粘贴源

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-11 06:33:48

您应该使用代码标记进行回溯,否则会显示混乱,我们不会看到异常类型。

但我相信这是TypeError: 'NoneType' object is not iterable,因为self.accept()可以返回None。原因是有几个进程可以获得侦听套接字的读取事件,但只有一个进程可以接受它。其余进程将得到捕获的EWOULDBLOCK错误,但是它返回None而不是连接地址对。

handle_accept()更改为在accept()返回None时立即返回。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1713078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档