Exemplo n.º 1
0
 def __init__(self, listen, handler, connect_addresses=set(), connect_interval=30):
     if isinstance(listen, int):
         listen = ("0.0.0.0", listen)
     self.uuid = uuid()
     self.handler = handler
     self.connections = dict()
     self.connect_interval = connect_interval
     self._connectAddresses = dict((addr, True) for addr in connect_addresses)
     self._sock = concurrent.listen(listen)
     self._server = concurrent.spawn(concurrent.serve, self._sock, self._connectionWrapper)
     self._connectThread = concurrent.spawn(self._connector)
     logging.getLogger("syncer").info("Listening on %s", listen)
Exemplo n.º 2
0
    def _connector(self):
        def _connect(addr):
            try:
                return addr, concurrent.connect(addr)
            except Exception:
                return addr, None

        connectPool = concurrent.Pool(20)
        while self._sock:
            addresses = [
                addr for addr, uuid in self._connectAddresses.iteritems() if uuid and (uuid not in self.connections)
            ]
            for address, sock in connectPool.imap(_connect, addresses):
                if sock:
                    self._connectAddresses[address] = False
                    concurrent.spawn(self._connectionWrapper, sock, address, address)
            concurrent.sleep(self.connect_interval)
Exemplo n.º 3
0
def socket_pair():
    s = concurrent.socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(("", 0))
    try:
        s.listen(1)
        t = concurrent.spawn(s.accept)
        c1 = concurrent.connect(s.getsockname())
        c2, _ = t.wait()
        return c1, c2
    except:
        return None, None
    finally:
        s.close()
Exemplo n.º 4
0
    def test_upload(self):
        def server_side():
            bind = self.s.next()
            assert_equals(bind.size, 130*1024)
            self.s.send(message.AssetStatus(status=message.SUCCESS))
            uploaded = 0
            for seg in self.s:
                if uploaded < 128*1024:
                    assert_equals(len(seg.content), 64*1024)
                    uploaded += len(seg.content)
                else:
                    assert_equals(len(seg.content), 2*1024)
                    self.s.send(message.AssetStatus(status=message.SUCCESS, ids=[
                        message.Identifier(type=message.TREE_TIGER, id='g"\xb6=\x1a8\x97i\xd9\xb3\xfd\xe0\xd0R"\xd8\xc9D\x0e\xc0"\xaeLQ')
                    ]))
                    break
        spawn(server_side)

        f = StringIO("A"*130*1024)
        ids = self.c.upload(f)
        assert_items_equal(ids, [
            message.Identifier(type=message.TREE_TIGER, id='g"\xb6=\x1a8\x97i\xd9\xb3\xfd\xe0\xd0R"\xd8\xc9D\x0e\xc0"\xaeLQ')
        ])
Exemplo n.º 5
0
 def __init__(self, db, name, port, connect_addresses=set(), db_poll_interval=5, connect_interval=30):
     self._db = db
     self.name = name
     super(Syncer, self).__init__(port, self._spawn, connect_addresses, connect_interval)
     self.running = True
     self._pusher = concurrent.spawn(self._db_push, db_poll_interval)
Exemplo n.º 6
0
 def __init__(self, name="Server"):
     super(Server, self).__init__()
     self.s = listen(('', 0), backlog=1)
     self.name = "Server"
     self.res = spawn(self.run)
Exemplo n.º 7
0
def run_parallel(*jobs):
    running = [concurrent.spawn(x) for x in jobs]
    return [x.wait() for x in running]
Exemplo n.º 8
0
Arquivo: util.py Projeto: zidz/bhindex
 def __init__(self, interval, code):
     self.running = True
     self.running = concurrent.spawn(self._run, interval, code)
Exemplo n.º 9
0
 def connect(self, address=None):
     config = self.config
     if not address:
         address = config['address']
     self._connection = Connection(address, config.get('myname', 'bhindex'))
     self._reader_greenlet = concurrent.spawn(self._reader)