【问题标题】:asyncio function not defined python 3.6异步函数未定义 python 3.6
【发布时间】:2017-03-29 18:34:19
【问题描述】:

这个问题我已经有一段时间了。当声明一个异步函数时:

async def init(loop):

然后我调用它返回的函数:

NameError: name 'init' is not defined

代码如下:

class Server:

    def __init__(self, port):
        asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
        loop = asyncio.get_event_loop()
        server = loop.run_until_complete(init(loop))

        print("Serving on {}".format(server.sockets[0].getsockname()))
        try:
            loop.run_forever()
        except KeyboardInterrupt:
            print("\rclosing the server")
            pass

        server.close()
        loop.run_until_complete(server.wait_closed())
        loop.close()

    async def init(loop):
        server = await loop.create_server(handle_request, '127.0.0.1', 8881)
        return server

    async def handle_request():

您可以指出我的任何方向都会有所帮助。 谢谢!

【问题讨论】:

    标签: python-asyncio python-3.6


    【解决方案1】:

    好像def init() 在你的班级里。通过取消缩进将其移出类:

    class Server:
    
        def __init__(self, port):
            #....
            loop.close()
    
        # IT SHOULD NOT BE HERE
    #IT SHOULD BE HERE!!! 
    async def init(loop):
        server = await loop.create_server(handle_request, '127.0.0.1', 8881)
        return server
    

    【讨论】:

    • handle_request 可能会有同样的问题。
    • 谢谢。这确实解决了问题!
    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 2017-05-20
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2018-03-12
    相关资源
    最近更新 更多