代码之家  ›  专栏  ›  技术社区  ›  Messa

aiohtp graphql asyncioExecutor graphqlLocatedError:“nonetype”对象不可调用

  •  0
  • Messa  · 技术社区  · 7 年前

    我从asyncio+graphql开始,但无法得到最简单的示例:

    from aiohttp import web
    from aiohttp_graphql import GraphQLView
    from graphql.execution.executors.asyncio import AsyncioExecutor
    from graphql import GraphQLSchema, GraphQLObjectType, GraphQLField, GraphQLString
    
    async def resolve_hello(root, info):
        return 'World!'
    
    Schema = GraphQLSchema(
        query=GraphQLObjectType(
            name='RootQueryType',
            fields={
                'hello': GraphQLField(
                    type=GraphQLString,
                    resolver=resolve_hello),
            },
        ))
    
    app = web.Application()
    GraphQLView.attach(
        app,
        route_path='/graphql',
        schema=Schema,
        graphiql=True,
        executor=AsyncioExecutor)
    
    if __name__ == '__main__':
        web.run_app(app)
    

    慰问:

    $ venv/bin/python example.py
    ======== Running on http://0.0.0.0:8080 ========
    (Press CTRL+C to quit)
    An error occurred while resolving field RootQueryType.hello
    Traceback (most recent call last):
      File "/.../venv/lib/python3.7/site-packages/graphql/execution/executor.py", line 447, in resolve_or_error
        return executor.execute(resolve_fn, source, info, **args)
      File "/.../venv/lib/python3.7/site-packages/graphql/execution/executors/asyncio.py", line 69, in execute
        result = fn(*args, **kwargs)
    TypeError: 'NoneType' object is not callable
    Traceback (most recent call last):
      File "/.../venv/lib/python3.7/site-packages/graphql/execution/executor.py", line 447, in resolve_or_error
        return executor.execute(resolve_fn, source, info, **args)
      File "/.../venv/lib/python3.7/site-packages/graphql/execution/executors/asyncio.py", line 69, in execute
        result = fn(*args, **kwargs)
    graphql.error.located_error.GraphQLLocatedError: 'NoneType' object is not callable
    

    /graphql graphql接口中的错误消息:

    {
      "errors": [
        {
          "message": "wait_until_finished() missing 1 required positional argument: 'self'"
        }
      ]
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Messa    7 年前

    问题出在执行程序设置中:

    GraphQLView.attach(
        ...
        executor=AsyncioExecutor)
    

    应该是

    GraphQLView.attach(
        ...
        executor=AsyncioExecutor())
    
    推荐文章