2016-03-05 71 views
0

背景:我想爲使用Intranet而使用Python編寫大量微服務(Django,Flask ...現在無關緊要)。假設將會有一個認證服務,一個通知服務(電子郵件和/或互聯網通信器集成)以及某種數據資源服務。 因此,一個用戶通過認證(例如get的一個JWT)然後點擊數據服務來改變某些東西。該更改應該會觸發通知服務的發送以發送通知。
問題從如何處理,我應該甚至考慮爲我的服務做一種客戶? 現在我想到的是使Python包或簡單地使用git子模塊來處理,如下所示:
擁有和端點data.service.local/api/v1/food我想(我認爲)做一個'供應商',可以讓我使用端點在一個簡單的方法:處理Python微服務環境中的依賴關係

class DataServiceProvider(object): 

    BASE_URL = settings.DATA_SERVICE_URL 

    def create_food(self, name): 
     return requests.post(BASE_URL + 'food', {'name': name}) 

我應該甚至不屑?我打算讓我的其他幾十個服務打到這個(特別是通知一個),所以我想我應該這樣做。但是,在哪裏存儲這些提供商?在名爲{service_name}-client的另一個存儲庫之外,並在需要使用它的任何其他服務中使用該包?

欣賞任何建議。謝謝。

回答

0

好吧,所以經過一些試驗和失敗後,我決定使用git子模塊和python軟件包。目錄樹是這個樣子:

main (repo) 
├── auth (repo) 
│   ├── auth-cleint (repo) 
│   │ └── setup.py 
│   └── requirements (contains an editable entry to ./auth-client) 
├── notify (repo) 
│   ├── notify-client (repo) 
│   │ └── setup.py 
│   └── requirements (-e ./notify-client and git+auth-client) 
├── docker-compose.yml 
└── data (repo) 
    └── requirements (git+notify-client and git+auth-client) 

中的驗證,通知,數據是主要的回購協議鏈接爲子模塊單獨的git倉庫。 Django項目中的客戶也是如此。我以可編輯模式將客戶安裝在其服務中,只是爲了讓我的開發變得輕鬆。一旦我開始分期/推廣,我將使用git +鏈接。

如果有人有興趣潛入更深層次,這現在可以在這裏工作https://github.com/PyPila/amok(不是商業項目 - 用於學習)。

在這段時間的一個提示我不得不使用--process-dependency-links標誌,因爲我的客戶端軟件包依賴於其他一些私有軟件包。 pip維護人員將該標誌設置爲已棄用,但它會一直存在,直到他們弄清楚如何解決這些「深層依賴性」。