import gevent.queue
def _writer(sock, queue):
for item in queue:
sock:sendall(item)
class asyncsocket(socket):
def __init__(self, *args, **kwargs):
socket.__init__(self, *args, **kwargs)
queue = gevent.queue.Queue()
self._queue = queue
self._writer = gevent.spawn(_writer, self, queue)
def sendall(self, msg):
self._queue.put(msg)
import gevent.queuedef _writer(sock, queue): for item in queue:
sock.sendall(item)
class asyncsocket(object): def __init__(self, sock): self._sock = sock self._queue = gevent.queue.Queue() self._writer = gevent.spawn(_writer, self._sock, self._queue)
def sendall(self, msg): self._queue.put(msg)
def close(self): self._writer.kill()