使用 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 (将#修改为@)