微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows上的gevent TCP服务器

我一直在试图创build一个没有任何(主要)成功的gevent的TCP服务器。 我认为问题出在Windows内(我之前在Windows下有套接字问题)。 我在Windows7下使用Python2.7,gevent0.13。 这是我的代码

from gevent import socket from gevent.server import StreamServer def handle_echo(sock,address): try: fp = sock.makefile() while True: # Just echos whatever it receives try: line = fp.readline() except Exception: break if line: try: fp.write(line) fp.flush() except Exception: break else: break finally: sock.shutdown(socket.SHUT_WR) sock.close() server = StreamServer(("",2345),handle_echo) server.server_forever()

这个实现类似于你可以在这里find的实现:

http://blog.pythonisito.com/2012/08/building-tcp-servers-with-gevent.html

现在没有错误,服务器似乎正常工作,但它不读取(并发送)任何东西。 是否有可能sock.makefile()在Windows7下无法正常工作? 或者,也许问题在别的地方?

如何解决这个“NotImplementedError”在Windows上的urllib2 / gevent错误

Nginx中禁用请求缓冲

如何在windows上安装zeroRPC(python)

理解Apache平台每秒的请求

http服务器使用python&gevent(不使用apache)

我试图用简单的replacesock.makefile()

while True: line = sock.recv(2048)

但是这个操作明显阻止。

我也试图混合gevent的spawn和sock.setblocking(0) 。 现在,这样做比较好,而且能够工作,但是一次只能处理300多个连接。

我要在Linux上做一些testing,看看它是否有所作为。 同时,如果您有任何想法,请随时与我分享。 干杯!

更新原始代码在Ubuntu 12.04下做同样的事情。 那么我应该如何实现gevent TCP服务器?

如何用Python编写Web应用程序?

Python,gevent,urllib2.urlopen.read(),下载加速器

一起使用gevent和multiprocessing与subprocess通信

在virtualenv中安装gevent

实现与gevent兼容的工作进程池的最佳方式是什么?

你发送给服务器的是什么? 确保它以换行符终止,否则readline()将不起作用。

你也可以使用tcpdump或wireshark来查看TCP层发生了什么,如果你认为你在代码中做了正确的事情。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐