コード例 #1
0
ファイル: test__greenio.py プロジェクト: novator24/zgevent
    def test_close_with_makefile(self):

        def accept_close_early(listener):
            # verify that the makefile and the socket are truly independent
            # by closing the socket prior to using the made file
            try:
                conn, addr = listener.accept()
                fd = conn.makefile()
                conn.close()
                fd.write('hello\n')
                fd.close()
                r = fd.write('a')
                assert r is None, r
                self.assertRaises(socket.error, conn.send, 'b')
            finally:
                listener.close()

        def accept_close_late(listener):
            # verify that the makefile and the socket are truly independent
            # by closing the made file and then sending a character
            try:
                conn, addr = listener.accept()
                fd = conn.makefile()
                fd.write('hello')
                fd.close()
                conn.send('\n')
                conn.close()
                r = fd.write('a')
                assert r is None, r
                self.assertRaises(socket.error, conn.send, 'b')
            finally:
                listener.close()

        def did_it_work(server):
            client = socket.create_connection(('127.0.0.1', server.getsockname()[1]))
            fd = client.makefile()
            client.close()
            assert fd.readline() == 'hello\n'
            assert fd.read() == ''
            fd.close()

        server = socket.tcp_listener(('0.0.0.0', 0))
        server_greenlet = gevent.spawn(accept_close_early, server)
        did_it_work(server)
        server_greenlet.kill()

        server = socket.tcp_listener(('0.0.0.0', 0))
        server_greenlet = gevent.spawn(accept_close_late, server)
        did_it_work(server)
        server_greenlet.kill()
コード例 #2
0
ファイル: backdoor.py プロジェクト: strogo/pylibs
 def __init__(self, address, locals=None):
     Greenlet.__init__(self)
     if isinstance(address, socket.socket):
         self.socket = address
     else:
         self.socket = socket.tcp_listener(address)
     self.locals = locals
コード例 #3
0
ファイル: backdoor.py プロジェクト: bigmlcom/pylibs
 def __init__(self, address, locals=None):
     Greenlet.__init__(self)
     if isinstance(address, socket.socket):
         self.socket = address
     else:
         self.socket = socket.tcp_listener(address)
     self.locals = locals
コード例 #4
0
ファイル: test__greenio.py プロジェクト: novator24/zgevent
    def test_del_closes_socket(self):
        timer = gevent.Timeout.start_new(0.5)

        def accept_once(listener):
            # delete/overwrite the original conn
            # object, only keeping the file object around
            # closing the file object should close everything
            try:
                conn, addr = listener.accept()
                conn = conn.makefile()
                conn.write('hello\n')
                conn.close()
                r = conn.write('a')
                assert r is None, r
            finally:
                listener.close()

        server = socket.tcp_listener(('0.0.0.0', 0))
        gevent.spawn(accept_once, server)
        client = socket.create_connection(('127.0.0.1', server.getsockname()[1]))
        fd = client.makefile()
        client.close()
        assert fd.read() == 'hello\n'
        assert fd.read() == ''

        timer.cancel()
コード例 #5
0
ファイル: multirunserver.py プロジェクト: 1stvamp/sd-proxy
def main():
    if len(argv) < 1:
        print >> stderr, 'Please provide a path to your config file.'
        return 1

    os.environ['SD_PROXY_CONFIG'] = argv[1]
    from serverdensity.proxy.app import app
    from serverdensity.proxy import settings
    from serverdensity.proxy.runserver import run

    handler = logging.StreamHandler(stderr)
    handler.setLevel(logging.WARNING)
    handler.setFormatter(logging.Formatter(
        '%(asctime)s %(levelname)s: %(message)s '
        '[in %(pathname)s:%(lineno)d]'
    ))
    app.logger.addHandler(handler)

    app.debug = settings.debug

    process_num = settings.processes or cpu_count()

    print >> stdout, 'Starting %s sd-proxy(s) on port %s..' % (
                               process_num, settings.port,)

    listener = tcp_listener(('127.0.0.1', settings.port))
    for i in xrange((process_num - 1)):
        Process(target=run, args=(app, None, listener)).start()

    run(app, None, listener)
    return 0
コード例 #6
0
def main():
    if len(argv) < 1:
        print >> stderr, 'Please provide a path to your config file.'
        return 1

    os.environ['SD_PROXY_CONFIG'] = argv[1]
    from serverdensity.proxy import settings, setup_logging
    from serverdensity.proxy.app import app
    from serverdensity.proxy.runserver import run

    setup_logging(app)
    app.debug = settings.debug

    process_num = settings.processes or cpu_count()
    app.logger.info('Starting %s sd-proxy(s) on port %s..' % (
                              process_num, settings.port,))

    listener = tcp_listener(('127.0.0.1', settings.port))
    for i in xrange((process_num - 1)):
        Process(target=run, args=(app, None, listener)).start()

    run(app, None, listener)
    return 0
コード例 #7
0
ファイル: test__socket.py プロジェクト: alexstoick/ruby_tests
 def setUp(self):
     greentest.TestCase.setUp(self)
     self.listener = socket.tcp_listener(('127.0.0.1', 0))
コード例 #8
0
ファイル: echo.py プロジェクト: Bobberino/musings
from gevent import monkey; monkey.patch_all()
from gevent.server import StreamServer
from gevent.socket import tcp_listener
from multiprocessing import cpu_count, Process

def echo(socket, addr):
    fileobj = socket.makefile()
    while True:
        line = fileobj.readline()
        if not line or line.strip().lower() == 'quit':
            break
        socket.send(line)

def serve_forever(listener):
    StreamServer(listener, echo).serve_forever()

if __name__ == '__main__':
    listener = tcp_listener(('0.0.0.0', 6000))
    for i in range(cpu_count()):
        p = Process(target=serve_forever, args=(listener, )).start()
コード例 #9
0
ファイル: pywsgi.py プロジェクト: strogo/pylibs
 def start(self):
     self.socket = socket.tcp_listener(self.address)
     self.address = self.socket.getsockname()
     self.server = Greenlet.spawn(server, self.socket, self.application)
コード例 #10
0
ファイル: echo.py プロジェクト: rluse123/musings
from gevent import monkey
monkey.patch_all()
from gevent.server import StreamServer
from gevent.socket import tcp_listener
from multiprocessing import cpu_count, Process


def echo(socket, addr):
    fileobj = socket.makefile()
    while True:
        line = fileobj.readline()
        if not line or line.strip().lower() == 'quit':
            break
        socket.send(line)


def serve_forever(listener):
    StreamServer(listener, echo).serve_forever()


if __name__ == '__main__':
    listener = tcp_listener(('0.0.0.0', 6000))
    for i in range(cpu_count()):
        p = Process(target=serve_forever, args=(listener, )).start()
コード例 #11
0
ファイル: server2.py プロジェクト: redbo/dss

def progress_report():
    start = time.time()
    last = 0
    while True:
        current = progress_counter.value()
        print (current - last), "per second"
        last = current
        time.sleep(1)


if __name__ == '__main__':
    progress_counter = atomic_t.AtomicT()
    workers = [multiprocessing.Process(target=serve, args=(
        socket.tcp_listener(('127.0.0.1', BASE_BACKEND + x), backlog=50,
        reuse_addr=True), serve_worker)) for x in xrange(WORKERS)]
    front_sock = socket.tcp_listener(('', 12345), backlog=50, reuse_addr=True)
    proxies = [multiprocessing.Process(target=serve,
               args=(front_sock, serve_proxy)) for x in xrange(PROXIES)]
    progress = multiprocessing.Process(target=progress_report)
    progress.start()
    for worker in workers:
        worker.start()
    for proxy in proxies:
        proxy.start()
    for worker in workers:
        worker.join()
    for proxy in proxies:
        proxy.join()
コード例 #12
0
 def setUp(self):
     greentest.TestCase.setUp(self)
     self.listener = socket.tcp_listener(('127.0.0.1', 0))