cgroup_server.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:treadmill 作者: Morgan-Stanley 项目源码 文件源码
def init():
    """App main."""

    # pylint: disable=W0612
    @click.command()
    @click.option('-p', '--port', help='Port for TCP server')
    @click.option('-s', '--socket', help='Socket for UDS server')
    @click.option('-a', '--auth', type=click.Choice(['spnego']))
    @click.option('-t', '--title', help='API Doc Title',
                  default='Treadmill REST API')
    @click.option('-c', '--cors-origin', help='CORS origin REGEX',
                  required=True)
    @click.option('--workers', help='Number of workers',
                  default=5)
    @click.option('--interval', help='interval to refresh cgroups',
                  default=60)
    def server(port, socket, auth, title, cors_origin, workers, interval):
        """Create pge server to provide authorize service."""
        (base_api, cors) = api.base_api(title, cors_origin)
        endpoint = cgroup_api.init(base_api, cors, interval=interval)
        if not endpoint.startswith('/'):
            endpoint = '/' + endpoint

        if port:
            rest_server = rest.TcpRestServer(
                port, auth_type=auth,
                protect=[endpoint],
                workers=workers
            )
        # TODO: need to rename that - conflicts with import socket.
        elif socket:
            rest_server = rest.UdsRestServer(socket)
        else:
            click.echo('port or socket must be specified')
            sys.exit(1)
        try:
            rest_server.run()
        except sock.error as sock_err:
            print(sock_err)
            if sock_err.errno == errno.EADDRINUSE:
                # TODO: hack, but please keep it for now, otherwise on the
                #       setup several master processes run on same server
                #       lookup api (listen on port 8080) is in tight loop.
                time.sleep(5)

    return server
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号