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

问题描述

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

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

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

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

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

非常感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)