【问题标题】:How to return two variables from promise DataLoader?如何从 Promise DataLoader 返回两个变量?
【发布时间】:2022-07-08 11:45:17
【问题描述】:

我有一个 python promise DataLoader 对象,它是从 GraphQL 查询中调用的,如下所示。

Loader 类;

class ExampleLoader(DataLoader):
    def batch_load_fn(self, _):
        data = get_data()
        return Promise.resolve([data])

example_loader = ExampleLoader()

GraphQL 查询;

def resolve_data(self, info, **kwargs):
    return example_loader.load('data').then(lambda data: data.demands[getattr(self, 'material_number')])

这很好用。

但是,我需要从 get_data 函数返回两个变量,还需要将这些变量从 Loader 返回到 GraphQL 查询。所以我尝试了以下解决方案。

class ExampleLoader(DataLoader):
    def batch_load_fn(self, _):
        data, error_dict = get_data()
        return Promise.resolve([data]), error_dict

example_loader = ExampleLoader()
def resolve_data(self, info, **kwargs):
    data, error_dict = example_loader.load('data')
    return data.then(lambda data: data.demands[getattr(self, 'material_number')])

但我收到There is no current event loop in thread 错误。如何在我的 GraphQL 查询中获取这两个变量?

【问题讨论】:

    标签: python promise graphene-python graphene-django


    【解决方案1】:

    尝试使用 asyncio Dataloaders 而不是基于 Promise 的数据加载器,因为在石墨烯 V3 检查 here 中不推荐使用 Promise。以后升级会遇到很多问题。

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 2018-03-26
      • 2018-06-05
      • 1970-01-01
      • 2014-12-22
      • 2013-06-06
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多