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

在Python中以LRU缓存方式管理服务集合?

如何解决在Python中以LRU缓存方式管理服务集合?

让我先描述一下我要解决的问题。我有多个服务要运行。这些服务具有以下属性

  1. 每个服务都在监听一个端口号。
  2. 每项服务都有一个唯一的整数标识符(我们称之为 service_id)。
  3. 每个服务都有一个目录,里面有很多文件service_id后的目录名。服务启动时,加载文件(需要几秒钟)。一旦服务启动,服务请求只需要 <10ms。当服务关闭时,它的目录应该被删除

为了有效地处理请求,我有一个工作程序(使用 Celery 实现),它从队列中一个一个地接收请求。如果工作人员看到请求需要一个已经启动并正在运行的服务,它就会简单地将请求发送到该服务。如果没有,worker 将启动一个新服务(并为其准备目录)。最后同样重要的是,当工作人员意识到有太多代理正在运行(超过预先确定的限制)时,它将终止使用最少的服务并删除其目录以清理空间。

我觉得它类似于 LRU cache 模式并且正在寻找一些现有的 Python 缓存模块。我找到了 functools.lru_cache(此处为官方文档),但问题是,它似乎没有为我提供任何方法来进行服务清理(终止服务进程、删除目录等)当一项即将被踢出缓存时。我正在寻找在删除项目时提供回调函数的地方,但我没有找到任何与之相关的内容

我是否遗漏了 functools.lru_cache 中的任何内容?或者有没有其他模块可以满足我的需要?我的意思是,我可以使用“哈希+双链表”数据结构编写自己的缓存,但如果现有模块有帮助,那就太好了。

非常感谢您的帮助!

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