Skip to content

Instantly share code, notes, and snippets.

@schlamar
Created December 10, 2012 10:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save schlamar/4249827 to your computer and use it in GitHub Desktop.
Save schlamar/4249827 to your computer and use it in GitHub Desktop.
import sys
import gevent
from gevent.coros import RLock
from gevent.server import StreamServer
from gevent.socket import create_connection
lock = RLock()
def _send(socket, data):
with lock:
socket.sendall(data)
def handle_tcp(socket, address):
print 'new connection'
length = 100
data1 = '1' * 1024 * 1024 * length
data2 = '2' * 1024 * 1024 * length
g1 = gevent.spawn(_send, socket, data1)
g2 = gevent.spawn(_send, socket, data2)
gevent.joinall([g1, g2])
print 'data sent'
def client_connect(address):
socket = create_connection(address)
while True:
data = socket.recv(1024 * 1024)
if not data:
print
print 'Data received'
break
else:
sys.stdout.write(data[0])
tcp_server = StreamServer(('127.0.0.1', 1234), handle_tcp)
gevent.spawn(client_connect, ('127.0.0.1', 1234))
tcp_server.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment