我对python线程/网络编程还不太熟悉,但有一个任务涉及到上述两个方面。 分配的一个要求是,对于每个新请求,我生成一个新线程,但我需要同时向浏览器发送和接收。 我目前正在使用Python中的asyncore库来捕获每个请求,但正如我所说的,我需要为每个请求生成一个线程,我想知道同时使用线程和异步是过度了,还是正确的方法? 任何建议都将不胜感激。 谢谢
编辑: 我正在写一个代理服务器,不确定我的客户端是否是持久的。我的客户端是我的浏览器(为了简单起见,使用firefox) 它似乎为每个请求重新连接。我的问题是,如果我打开一个标签页,里面有http://www.google.com,里面有http://www.stackoverflow.com,我一次只能从每个标签页收到一个请求,而不是从google和SO收到多个请求。
我回答了一个听起来与您的问题惊人相似的问题,其中有人有一个家庭作业来创建一个客户机-服务器设置,每个连接都在一个新线程中处理:https://stackoverflow.com/a/9522339/496445
总的来说,您有一个主服务器循环,不断地寻找一个新的连接进来。当它出现时,您将它交给一个线程,该线程将对新的通信进行自己的监视。
关于异步与线程的额外信息
从asyncore docs:
正如这句话所说,使用asyncore和threading在很大程度上应该是互斥的选项。上面的链接是线程方法的一个示例,其中服务器循环(在单独的线程或主线程中)执行阻塞调用以接受新的客户端。当它得到一个线程时,它生成一个线程,然后继续处理通信,服务器再次进入阻塞调用。
在使用asyncore的模式中,您将使用它的async循环,该循环将依次为发生的各种活动调用您自己注册的回调。这里没有线程,而是对活动的所有打开文件句柄进行轮询。你有一种同时做事的感觉,但在幕后,它是按顺序安排每件事。
相关问题 更多 >
编程相关推荐