'How to return two variables from promise DataLoader?

I have a python promise DataLoader object and it is called from GraphQL query as below.

The Loader class;

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

example_loader = ExampleLoader()

The GraphQL query;

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

This works fine.

However, I need to return two variables from the get_data function, and also I need to return those variables from Loader to GraphQL query. So I tried the following solution.

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')])

But I'm getting There is no current event loop in thread error. How can I get those two variables in my GraphQL query?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source