我正在尝试设计一个弹性且高度可用的 python API 后端服务。核心服务旨在持续运行。该服务必须为我的每个租户独立运行。这是必需的,因为核心服务是一个阻塞服务,每个租户的执行需要独立于任何其他租户的服务。
核心服务将由供应服务启动。供应商也是一个持续运行的服务,负责做家务功能,即在租户注册时启动核心服务,检查所需的环境和属性以及停止核心服务等。
目前我正在使用该multiprocessing
模块从供应商服务中生成核心服务的子实例。为每个租户使用一个线程的多线程服务也是一种选择,但如果任何线程崩溃,则会中断其他租户的服务。理想情况下,我希望所有这些都作为后台进程运行。问题是
如果我守护供应商服务,
multiprocessing
将不会让该守护程序创建子进程。这是写在这里如果provisioner服务死了,那么所有的孩子都将成为孤儿。我该如何从这种情况中恢复过来。
显然,我对不遵循这种multiprocessing
使用模式的解决方案持开放态度。