微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Graphene GraphQL,是否可以缓存用于中继连接分页的查询集?

如何解决使用 Graphene GraphQL,是否可以缓存用于中继连接分页的查询集?

当使用 Graphene 的 Relay Connection 字段时,通过查询集进行分页非常容易。客户端传递参数(firstafterbeforelast),然后通过返回查询集,解析器自动分页

对我来说,一个超级强大的模式是,如果你可以缓存(全局,使用 Memcached/Redis 等)查询集,无论传递的参数组合如何。这将使分页变得非常流畅、高效、可扩展。

这是我尝试执行此操作的示例:

# Create a memoized queryset using cache_memoize,but Could be any library
from cache_memoize import cache_memoize

# This will create a cache key using the arguments passed to the function
cache_memoize(5000)
def get_paginated_my_model(**kwargs):
   # How do I pass the arguments here?
   return MyModel.objects.all()


# Then...in our resolver
 def resolve_my_models(self,info,**kwargs):
    print(kwargs) # e.g. {'after': 'YXJyYXljb25uZWN0aW9uOjE=','first': 5}
    return get_paginated_my_model(kwargs)

这适用于创建缓存键,但这里存储的查询集将始终是完整的查询集。解析器似乎在幕后使用了一些魔法来实现查询集的切片。

有没有办法实现类似的目标?是否可以以某种方式使用石墨烯使用的切片逻辑?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。