[问题] 请问二个虚拟环境间的变量沟通

楼主: HerryL (Hollander)   2024-08-03 00:20:23
请问各位大大,
我有一个既有的web_service_a.py,是在venv_a下执行,
目前处理3种function呼叫服务,就当是func1, func2 ,func3好了,
现在,在同一台机器里,
需要再加一个func4,但这个func4当初是在venv_b下开发。
因为二个虚拟环境很多版本差异,已经放弃整合二个虚拟环境,
请问,除了把func4做成独立服务web_service_b.py呼叫(或许配合docker),
把总入口放在web_service_a.py,遇到呼叫func4再转call web_service_b外,
有没有其他方法可以解?
chatgpt曾建议我使用multiprocessing's Pipe或Queue,
但是因为需要使用不同的venv,这种解法都会遇到配合subprocessing.run()
去呼叫虚拟环境python+py档一起使用,
但是subprocess.run()似乎无法传递pipe或queue
(至少它给的范例是不能run1的)
我目前还在看multiprocessing的文件,
但是看起来没什么头绪,
所以想先请教大家,
Pipe或Queue是有机会解的吗,还是真只能再做出web_serice_b?
作者: wuyiulin (龙破坏剑士-巴斯达布雷达)   2024-08-03 09:23:00
MQTT?
作者: DaOppaiLoli (大欧派萝莉)   2024-08-04 03:42:00
pipe是指subprocess.PIPE吗
作者: tzouandy2818 (Naked Bear)   2024-08-04 09:57:00
写成http api怎么样
作者: ssdoz2sk (眷恋着提拉米苏的风采~)   2024-08-05 20:36:00
只有两个 process ,做成 restful API 供呼叫。或是用 zeromq 就不用有中间的 broker
作者: leolarrel (真.粽子无双)   2024-08-06 13:36:00
ZeroMQ
作者: LP9527 (ㄊㄇ抽菸都去)   2024-08-06 22:44:00
最简单的做法是 b 做成 executable 给 a call; 再来就是用 unix socket 串; 再来再考虑别的 rpc 或直接 rest api用不用 mq 要先考虑有没有 realtime 需求
作者: hanksky (鲁蛇一枚)   2024-08-09 12:36:00
用socket 来做应该最简单,不然开api学一下flask快速开出简易后端,两个就可以直接沟通了

Links booklink

Contact Us: admin [ a t ] ucptt.com