TL; DR
При добавлении конечной точки GraphQL к объекту app
замените ее на
app = FastAPI()
app.add_route("/", GraphQLApp(schema=graphene.Schema(query=Query),
executor_class=AsyncioExecutor))
ПОЛНЫЙ ОТВЕТ
Хорошо, поэтому я нашел вашу проблему после проверки с документами и сравнения их с вашим кодом.
Это не проблема с httpx, а проблема с тем, как вы используете GraphQL.
Как видно из Документы Fastapi , функция resolve_hello
объявлена с традиционным def
вместо async def
. Это имеет значение для движка GraphQL при запуске, потому что он вызывает функцию, но не ожидает ее, вместо этого он получает объект сопрограммы и продолжает возвращать результат. Поскольку результатом является сопрограмма, он не работает и выдает исключение, которое вы опубликовали. Решение лежит в Starlette Docs , который в качестве параметра передает движок asyncio
для выполнения async
запросов GraphQL.
Это сложно, потому что fastAPI основан на Starlette, поэтому у вас есть чтобы прочитать оба документа на случай, если вам что-то понадобится.
Дайте мне знать, если проблема не исчезнет.