我从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'"
    }
  ]
}

最佳答案

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

GraphQLView.attach(
    ...
    executor=AsyncioExecutor)


应该

GraphQLView.attach(
    ...
    executor=AsyncioExecutor())

关于python - aiohttp-graphql AsyncioExecutor GraphQLLocatedError:'NoneType'对象不可调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54169116/

10-12 22:03