Skip to content

Instantly share code, notes, and snippets.

@aoeuidht
Created July 18, 2013 10:09
Show Gist options
  • Save aoeuidht/6028238 to your computer and use it in GitHub Desktop.
Save aoeuidht/6028238 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
import socket
import select
if __name__ == '__main__':
addr = ('127.0.0.1', 8004)
max_sockets = 3
max_requests = 100
request_cnt = 0
sockets = {}
epoll = select.epoll()
def create_socket():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sn = s.fileno()
sockets[sn] = s
s.connect(addr)
s.setblocking(0)
epoll.register(sn, select.EPOLLOUT)
for x in range(max_sockets):
create_socket()
while True:
events = epoll.poll(1)
if not events:
break
for fileno, event in events:
if not sockets.has_key(fileno):
print '%d not exists' % (fileno, )
continue
s = sockets[fileno]
if event & select.EPOLLOUT:
s.send('hello, world\n\n')
epoll.modify(fileno, select.EPOLLIN)
elif event & select.EPOLLIN:
while True:
data = s.recv(1024)
if not data:
s.close()
epoll.unregister(fileno)
sockets.pop(fileno, '')
request_cnt = request_cnt + 1
if request_cnt < max_requests:
create_socket()
break
else:
print data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment