2016-12-26 17 views
0

我們在我們的項目設置中使用Flask和nameko與RabbitMQ。我們將此用於多個項目(我們已在2個月前開始),並且在開發時我們遇到了服務名稱問題。Python Nameko多個項目(開發)

我們有兩個項目 - A和B,二者均具有UserService(具有不同的功能):

class UserService: 
    name = 'user_service' 
    ... 

問題是,當我們需要同一臺機器上同時運行的項目之一,用戶服務不加工。確切地說,兩者都在工作,但所有請求都由其中一個處理,並且由於它們的結構不同,所以我們得到錯誤。

第一個想法是項目前綴添加到服務的名稱,像A_user_service,但是這確實是醜陋的解決方案(在rpc部分,我們則需要調用類似rpc.A_user_service,這是可怕的)。 nameko項目是否有任何類型的命名空間?我們已經嘗試在配置中設置rpc_excange參數,因爲每個項目都不相同,但這並不是我們解決的問題。

回答

1

我想這取決於你如何定義「項目」。服務名稱是主命名空間,所以如果有任何機會這兩個用戶服務將共存,它們可能應該使用不同的(也許更具體的)服務名稱。

如果它們是完全獨立的(例如,用於兩個獨立的客戶開發的),那麼也許使用單獨的RabbitMQ vhost s就解決問題了嗎?這樣,你最終的服務,在這裏沒有什麼虛擬主機一個可以看到或跟任何在虛擬主機B(當然,你可以在其中運行服務x的實例運行兩個單獨的「集羣」這兩個,如果你想要的,例如,用於服務將兩個客戶現場/網絡)

+0

雖然這上運行是可以接受的解決方案,我需要知道,如果有辦法與菇配置做到這一點。如果我不這樣做,我會接受這個答案。 – PerunSS

+0

也許我誤解,但'vhost' _is_菇配置的一部分,通過'AMQP_URI' – second

+0

是的,是我不好。 RabbitMQ vhost將徹底解決這個問題。謝謝。 – PerunSS