diff --git a/src/subscriber/coop_eventlet.py b/src/subscriber/coop_eventlet.py index 87e599f..83d862c 100644 --- a/src/subscriber/coop_eventlet.py +++ b/src/subscriber/coop_eventlet.py @@ -12,7 +12,7 @@ from argparse import ArgumentParser import eventlet import logging import os -from eventlet.green import socket +import socket import sys import cPickle as pickle @@ -34,21 +34,28 @@ def main(argv=None): print args # application address = ('localhost', 8010) + eventlet.spawn_n(subscriber, address) while True: - subscriber(address) eventlet.sleep(1) def subscriber(address): - try: - LOG.info("connecting to %s", address) - cx = eventlet.connect(address) - except socket.error, e: - LOG.error("%i %s", e.errno, e) - return while True: - s = cx.recv(4096) - item = pickle.loads(s) - LOG.info("%s", item) + while True: + try: + LOG.info("connecting to %s", address) + cx = eventlet.connect(address) + break + except socket.error, e: + LOG.error("%i %s", e.errno, e) + eventlet.sleep(1) + while True: + s = cx.recv(4096) + if len(s) == 0: + LOG.error("connection broken") + break + item = pickle.loads(s) + LOG.info("%s", item) + cx.close() if __name__ == '__main__':