iT邦幫忙

0

多支API服務怎麼共用同一個Port?

大家好,

請問:我用Python的Flask套件,寫了兩支API在公司的電腦裡,兩支API個別提供資料庫存取的多個服務。兩支API的url的開頭分別是:

  1. http://xxx.xxx.x.xx:9000/<API位置>
  2. http://xxx.xxx.x.xx:9001/<API位置>

這樣可以運作正常,但當我用同一個Port時,其中一支就會無法啟動,有什麼方法可以讓多支API共用Port?謝謝

slime iT邦大師 1 級 ‧ 2019-01-09 19:13:36 檢舉
找一個當主要的 API , 然後用到某些功能時, 再去呼叫另一個 API 的資料.

比如外面連線到 :9000 , 而需要某些資料時, :9000 這邊的 API 再轉送 :9001 去抓資料.
小魚 iT邦高手 1 級 ‧ 2019-01-09 19:39:58 檢舉
這也是一個解法 XD
kikulu iT邦研究生 5 級 ‧ 2019-01-09 19:44:54 檢舉
用反向代理
0
froce
iT邦大師 5 級 ‧ 2019-01-09 18:04:05

去學計網,你就會發現你問的是啥等級的問題了。
兩個不同程式實例有辦法共用port?

0
小魚
iT邦高手 1 級 ‧ 2019-01-09 18:21:10

以現在的架構,
這是不可能的任務,
解決方法就是你自己發明新的作業系統、新的網路、新的...
(只有小魚不能換新的)

小魚 iT邦高手 1 級 ‧ 2019-01-09 18:22:46 檢舉

不過如果要兩隻API放在同一個Port,
換個思維,
你可以把兩個API合併成一個,
(隨便你怎麼合併)
我猜上級的需求是不是這樣?

hsc01 iT邦新手 5 級 ‧ 2019-01-09 18:55:27 檢舉

有想過要合併,但由於其他同事用Django開發API,我用Flask,不同套件,要合併要重寫程式..

小魚 iT邦高手 1 級 ‧ 2019-01-09 19:39:33 檢舉

總之如果一定要在同一個Port就只有合併一條路了,
上級不會管你怎麼合併的,
只會管你有沒有做到他的要求.

0
kikulu
iT邦研究生 5 級 ‧ 2019-01-09 19:46:08
hsc01 iT邦新手 5 級 ‧ 2019-01-10 00:28:01 檢舉

謝謝。那如果我沒有domain呢?
如果根據這篇文章用法,那應該會是用http://192.168.x.xx:80/.. 對外,然後透過nginx假設再分派給http://192.168.x.xx:9000/http://192.168.x.xx:9001/ 兩個不同的port,打80 port時會帶例如example1.com、example2.com兩個domain進來,但我沒有買domain就沒辦區辨?

kikulu iT邦研究生 5 級 ‧ 2019-01-10 09:39:24 檢舉

試試server_name _;

fillano iT邦超人 1 級 ‧ 2019-01-11 10:38:42 檢舉

你可以設定不同api在localhost(127.0.0.1)的不同port監聽。然後透過nginx或任何有rewrite功能的伺服器,把符192.168.x.xx:80/[不同api目錄]對應到localhost的不同port。

0
cancelpc
iT邦新手 4 級 ‧ 2019-01-14 13:29:07

caddy 當 proxy server。
https://caddyserver.com

設定檔內容:

localhost, xxx.xxx.x.xx {
    ...
    proxy /ap1 xxx.xxx.x.xx:9000 {
        transparent
    }
    proxy /ap2 xxx.xxx.x.xx:9001 {
        transparent
    }
}
0
rew87516
iT邦新手 5 級 ‧ 2019-01-16 10:08:44

再寫一個API對外
然後用那個API連接你和你眾多同事的function如何

我要發表回答

立即登入回答