我需要编写一个非常具体的数据处理守护进程。
这是我认为它可以与多处理一起使用的方式:
进程#1:一个进程来获取一些重要的元数据,它们可以每秒获取一次,但这些数据必须在进程#2中可用。进程#1 写入数据,进程#2 读取它们。
进程#2:两个进程将根据进程#1 中收到的内容获取真实数据。获取的数据将存储到(大)队列中以“稍后”处理
进程#3:两个(或更多)进程轮询在进程#2 中创建的队列并处理这些数据。完成后,将填充一个新队列以在流程 #4 中使用
进程#4:两个进程将读取由进程#3 填充的队列并通过HTTP 发送回结果。
所有这些不同过程背后的想法是尽可能地将它们专门化,并使它们尽可能独立。
所有这些进程将被包装到一个在这里实现的主守护进程中:
我想知道我所想象的是否相关/愚蠢/过度杀伤/等等,特别是如果我在将守护进程multiprocessing.Process
的主父进程中运行守护进程(es)。此外,我有点担心潜在的锁定问题。理论上,读写数据的过程使用不同的变量/结构,因此应该避免一些问题,但我仍然担心。
也许对我的上下文使用多处理不是正确的做法。我很想得到您对此的反馈。
备注:
- 我不能使用 Redis 作为数据结构服务器
- 我考虑过将 ZeroMQ 用于 IPC,但如果多处理也可以完成这项工作,我会避免使用另一个额外的库。
提前感谢您的反馈。