zoukankan      html  css  js  c++  java
  • Tornado io_loop

    import errno
    import functools
    import socket

    import tornado.ioloop
    from tornado.iostream import IOStream


    async def handler_connection(connection, address):
    stream = IOStream(connection)
    message = await stream.read_until_close()
    print("message from client : ", message.decode().strip())


    def connection_ready(sock, fd, events):
    while True:
    try:
    connection, address = sock.accept()
    except socket.error as e:
    if e.args[0] not in [errno.EWOULDBLOCK, errno.EAGAIN]:
    raise
    return
    connection.setblocking(0)
    io_loop = tornado.ioloop.IOLoop.current()
    io_loop.spawn_callback(handler_connection, connection, address)

    if __name__ == '__main__':
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.setblocking(0)
    sock.bind(('',8888))
    sock.listen(12)
    io_loop = tornado.ioloop.IOLoop.current()
    callback = functools.partial(connection_ready, sock)
    io_loop.add_handler(sock.fileno(), callback, io_loop.READ)
    io_loop.start()


    #创建socket 连接后,获取tornado 的事件循环,然后把 socket 句柄和回调函数注册到事件循环中.可以循环每个socket连接





  • 相关阅读:
    这些例子很炫,感兴趣的童鞋可以了解一下
    Java经典习题24
    Java经典习题23
    Java经典练习题22
    Java经典习题21
    Java经典习题20
    Java经典练习题19
    Java经典练习题18
    Java经典习题17
    Java经典习题16
  • 原文地址:https://www.cnblogs.com/huyangblog/p/13140464.html
Copyright © 2011-2022 走看看