Esempio n. 1
0
 def accept_ssl(sock, application, cert, verify=None, timeout=None):
     with closing(sock):
         while True:
             client, addr = greennet.accept(sock)
             try:
                 client = greennet.ssl.accept(client, cert, verify, timeout)
             except greennet.Timeout:
                 client.close()
                 continue
             greennet.schedule(greenlet(handle_connection), client, application, True)
Esempio n. 2
0
def serve(application, addr=('', 8000)):
    trigger = Trigger()
    import signal
    handler = signal_handler(trigger)
    signal.signal(signal.SIGINT, handler)
    sock = listen(addr)
    greennet.schedule(greenlet(stop), trigger, sock)
    greennet.switch()
    try:
        accept_connections(sock, application)
    except (socket.error, select.error), err:
        if err.args[0] != errno.EBADF:
            raise
Esempio n. 3
0
from py.magic import greenlet

import greennet
from greennet.queue import Queue


def popper(queue):
    print queue.pop()


if __name__ == '__main__':
    queue = Queue()
    greennet.schedule(greenlet(popper), queue)
    queue.append('hello world')
    greennet.run()

Esempio n. 4
0
def accept_connections(sock, application):
    with closing(sock):
        while True:
            client, addr = greennet.accept(sock)
            greennet.schedule(greenlet(handle_connection), client, application)
Esempio n. 5
0
from __future__ import with_statement
from contextlib import closing
import socket

from py.magic import greenlet

import greennet


def echo(sock):
    with closing(sock):
        bufsize = sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
        while True:
            data = greennet.recv(sock, bufsize)
            if not data:
                break
            greennet.sendall(sock, data)


if __name__ == '__main__':
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('', 1234))
    sock.listen(socket.SOMAXCONN)
    with closing(sock):
        while True:
            client, addr = greennet.accept(sock)
            greennet.schedule(greenlet(echo), client)