猿问

aiohttp-graphql AsyncioExecutor

我从 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 graphiql 界面中的错误消息:


{

  "errors": [

    {

      "message": "wait_until_finished() missing 1 required positional argument: 'self'"

    }

  ]

}


慕无忌1623718
浏览 145回答 1
1回答

慕少森

问题出在执行程序设置中:GraphQLView.attach(    ...    executor=AsyncioExecutor)应该GraphQLView.attach(    ...    executor=AsyncioExecutor())
随时随地看视频慕课网APP

相关分类

Python
我要回答