【问题标题】:Create a daemon background service?创建守护进程后台服务?
【发布时间】:2016-08-07 08:32:47
【问题描述】:

我正在尝试在 Python 中创建后台服务。该服务将从另一个 Python 程序调用。它需要作为守护进程运行,因为它使用了一个必须预先加载到内存中的重对象(300MB)。我已经查看了python-daemon,但仍然没有找到如何去做。特别是,我知道如何让守护进程运行并定期自己做一些事情,但我不知道如何让它可以从另一个程序调用。你能帮忙吗?

【问题讨论】:

  • @mithatkonuk 我更喜欢 Python 守护进程而不是系统守护进程,正如这个答案中所建议的那样:stackoverflow.com/questions/1603109/…。有什么方法可以让 Python 守护进程可调用,还是必须使用系统守护进程?

标签: python unix subprocess python-daemon


【解决方案1】:

当我想从网络应用程序访问一个大的二进制矩阵时,我遇到了类似的情况。

当然有很多解决方案,但我使用Redis,一个流行的内存数据库/缓存系统,成功地存储和访问我的对象。它具有实用的 Python 绑定(几个可能等效的包装库)。

主要优点是当服务停止时,数据的副本仍保留在磁盘上。此外,我注意到一旦到位,它可以用于我的应用程序中的其他事情(例如 Celery 建议将其用作后端),实际上,可以用于任何其他不相关程序中的其他服务。

【讨论】:

  • Redis 可以与任意对象一起使用吗?事实上,我的对象是来自 tensorFlow 的数学模型
  • 不是任意的。可以是列表、哈希等,见redis.io/topics/data-types。但是对于 Python 对象,您将不得不对其进行腌制,然后将其存储为字符串,并在需要时反序列化。如果对象属性是简单数据类型,也可以单独存储。
猜你喜欢
  • 1970-01-01
  • 2010-09-24
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多