def serve(self): self.server_socket = coio.nbsocket(socket.AF_INET, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.server_socket.bind((self.address, self.port)) self.server_socket.listen(self.listen_queue_size) if __debug__: logging.debug('listening on %r' % (self.server_socket.getsockname(),)) wsgi.WsgiListener(self.server_socket, self.handle_request)
def _serve(self): self.listening_socket = coio.nbsocket(socket.AF_INET, socket.SOCK_STREAM) self.listening_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.listening_socket.bind(self.listener) self.listening_socket.listen(self.listen_backlog) while True: conn, addr = self.listening_socket.accept() coio.stackless.tasklet(self.handle_connection)(Channel(conn), addr) coio.stackless.schedule()
def ConsoleSignalHandler(signum=None): """This is called by coio on SIGUSR1.""" if not console_signal_server: console_server_socket = coio.nbsocket(socket.AF_INET, socket.SOCK_STREAM) console_server_socket.bind(('127.0.0.1', 0)) console_server_socket.listen(16) filename = '/tmp/syncless.console.port.%s' % ( console_server_socket.getsockname()[1]) f = open(filename, 'a') try: os.unlink(filename) except OSError, e: if e[0] != errno.ENOENT: # It's OK if the file was missing. raise coio.stackless.tasklet(SilentConsoleListener)(console_server_socket) console_signal_server[:] = [console_server_socket, f]
def main(): s = coio.nbsocket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', 5555)) c = Channel(s) N = 200000 M = 16 message = '.' * M byte_count = len(message) * N f = Queue() coio.stackless.tasklet(rawsocket_echoclient_core.sender)(c, message, N, f) coio.stackless.tasklet(rawsocket_echoclient_core.receiver)(c, N, f) start_time = timer() f.pop() f.pop() end_time = timer() diff_time = end_time - start_time print 'Transmission time: %fs' % diff_time print '%.2f messages/s, %.2f MB/s' % (float(N*2) / diff_time, (float(byte_count*2) / 2**20) / diff_time)
def RemoteConsoleListener(bind_addr, bind_port): """Listen for RemoteConsole connections, and handle them in tasklets.""" server_socket = coio.nbsocket(socket.AF_INET, socket.SOCK_STREAM) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.bind((bind_addr, bind_port)) logging.info( 'RemoteConsole accepting on %r' % (server_socket.getsockname(),)) baddr = server_socket.getsockname() logging.info( 'connect with: %s -m syncless.backdoor_client %s %s' % (sys.executable, baddr[0], baddr[1])) logging.info('fallback connect with: telnet %s %s' % baddr[:2]) logging.info('press Ctrl-<C> to abort the app with the RemoteConsole') server_socket.listen(16) while True: sock, saddr = server_socket.accept() coio.stackless.tasklet(RemoteConsoleHandler)( sock, saddr, do_check_uid=False) sock = saddr = None # Save memory, allow early close.
def main(): s = coio.nbsocket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', 5555)) c = Channel(s) N = 200000 M = 16 message = '.' * M byte_count = len(message) * N f = Queue() coio.stackless.tasklet(rawsocket_echoclient_core.sender)(c, message, N, f) coio.stackless.tasklet(rawsocket_echoclient_core.receiver)(c, N, f) start_time = timer() f.pop() f.pop() end_time = timer() diff_time = end_time - start_time print 'Transmission time: %fs' % diff_time print '%.2f messages/s, %.2f MB/s' % (float(N * 2) / diff_time, (float(byte_count * 2) / 2**20) / diff_time)
#! /usr/local/bin/stackless2.6 # by [email protected] at Sun Apr 18 16:02:32 CEST 2010 import socket from syncless import coio if __name__ == '__main__': sock = coio.nbsocket(socket.AF_INET, socket.SOCK_STREAM, 0) sock.connect(('gmail-smtp-in.l.google.com', 25)) #sock.connect(('209.85.218.52', 25)) print repr(sock.recv(256)) # '220 mx.google.com ESMTP 20si15803912bwz.24' print 'Exiting.' # Won't exit because we did DNS lookups with coio (evdns). #coio.stackless.schedule_remove(None)