mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-23 15:10:48 +03:00
(relay connection) promisify result from async method
This commit is contained in:
parent
51c37fef98
commit
f64934f85d
|
@ -12,6 +12,7 @@ from ..types import (AbstractType, Boolean, Enum, Int, Interface, List, NonNull,
|
||||||
from ..types.field import Field
|
from ..types.field import Field
|
||||||
from ..types.objecttype import ObjectType, ObjectTypeMeta
|
from ..types.objecttype import ObjectType, ObjectTypeMeta
|
||||||
from ..types.options import Options
|
from ..types.options import Options
|
||||||
|
from ..utils.compat_asyncio_promise import promisify
|
||||||
from ..utils.is_base_type import is_base_type
|
from ..utils.is_base_type import is_base_type
|
||||||
from ..utils.props import props
|
from ..utils.props import props
|
||||||
from .node import is_node
|
from .node import is_node
|
||||||
|
@ -139,7 +140,7 @@ class IterableConnectionField(Field):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def connection_resolver(cls, resolver, connection_type, root, args, context, info):
|
def connection_resolver(cls, resolver, connection_type, root, args, context, info):
|
||||||
resolved = resolver(root, args, context, info)
|
resolved = promisify(resolver(root, args, context, info))
|
||||||
|
|
||||||
on_resolve = partial(cls.resolve_connection, connection_type, args)
|
on_resolve = partial(cls.resolve_connection, connection_type, args)
|
||||||
if isinstance(resolved, Promise):
|
if isinstance(resolved, Promise):
|
||||||
|
|
12
graphene/utils/compat_asyncio_promise.py
Normal file
12
graphene/utils/compat_asyncio_promise.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import promise
|
||||||
|
|
||||||
|
def promisify(resolved):
|
||||||
|
try:
|
||||||
|
import asyncio
|
||||||
|
if isinstance(resolved, asyncio.Future) or \
|
||||||
|
asyncio.iscoroutine(resolved):
|
||||||
|
return promise.promisify(resolved)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return resolved
|
Loading…
Reference in New Issue
Block a user