(relay connection) promisify result from async method

This commit is contained in:
Stan Chollet 2016-11-30 18:39:04 +01:00
parent 51c37fef98
commit f64934f85d
2 changed files with 14 additions and 1 deletions

View File

@ -12,6 +12,7 @@ from ..types import (AbstractType, Boolean, Enum, Int, Interface, List, NonNull,
from ..types.field import Field
from ..types.objecttype import ObjectType, ObjectTypeMeta
from ..types.options import Options
from ..utils.compat_asyncio_promise import promisify
from ..utils.is_base_type import is_base_type
from ..utils.props import props
from .node import is_node
@ -139,7 +140,7 @@ class IterableConnectionField(Field):
@classmethod
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)
if isinstance(resolved, Promise):

View 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