[問題] 請問二個虛擬環境間的變數溝通

作者: 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