2012-01-12 49 views
1

我正在構建各種基於python的項目,這些項目使用pip/build來安裝依賴項。但我不喜歡有人刪除github項目並癱瘓我的應用程序或網絡中斷的想法,這意味着我無法執行部署。爲生產部署緩存Python需求

其他人怎麼解決這個問題?

我有不同的想法,但我想也許這聽起來最有前途的將是某種形式的緩存代理服務器中的一個。我會指點pip來使用這個內部代理服務器來緩存下載項目的副本,並且在提供緩存版本之前定期檢查更新(如果有網絡連接)。

這樣的事情已經存在嗎?

使用案例:

我有我部署到Web服務器1.我添加新的功能與遠程依賴性,項目時我來更新生產Web服務器,PyPI將關閉,因此我無法部署。或者,當我來建立一個新的Web服務器時,依賴關係已經從github或任何地方消失了。

我怎樣才能使它所以我部署的/ dev環境總是可以不管在更廣闊的世界會發生什麼長大的?

此外,當我部署時,我不會部署在現有代碼的頂部。相反,我會建立一個新的virtualenv並切換到它,所以我可以回滾,如果出現任何問題。所以每次部署時我都需要重建我的環境,並且需要依賴關係才能存在。

所以我在尋找,將隔離我對短期網絡中斷託管的依賴,以及防範被刪除項目的服務器解決方案。

+0

實際上,我工作的事情來處理這事。由於需求不是非常高,目前發展緩慢。然而,目前我一直在圍繞着點子來獲得這種功能。目前我已經到了pip不需要運行任何C編譯的地方。一旦我得到一個實際的項目,不僅僅是增加概念的證明,我會讓你知道的!不應該超過幾天,我會在github上有一些基本的東西。如果你想等待它,我的github是https://github.com/ravenac95。乾杯! – ravenac95 2012-01-12 18:10:01

+0

「或者,也許當我來建立一個新的Web服務器時,依賴已經從github或任何地方消失」?如果它消失了,你需要修改你的軟件,不是嗎? – 2012-01-12 18:46:49

+0

@ S.Lott不,我需要修改我的部署,這正是這個問題的要點 – user1037541 2012-01-13 09:53:43

回答

0

您應該保留您所依賴項目的「參考副本」。

如果有人刪除從GitHub(PyPI中,並和所有的鏡子,和網上的其他網站)的項目,那麼你必須源,現在可以分發。

+0

是的,但我想要一個自動化系統,可以做到點/ build可以掛鉤,所以我不需要自己手動安裝這些東西。 – user1037541 2012-01-12 17:09:51

+0

什麼?我安裝一次依賴關係。安裝的人會安裝一次,然後不時更新,當測試證實一切都很好時。我不確定你想要「自動化」。你可以通過**更新**來解釋一個例子或場景的問題嗎? – 2012-01-12 17:42:16

+0

我已更新我的問題 – user1037541 2012-01-12 17:55:24

0

我有完全相同的要求,也使用buildout來管理我的部署。我儘量不要在系統範圍內安裝任何我的軟件包依賴項;我讓buildout將所有的雞蛋都安裝到我的構建中。這樣,如果我在項目的第N + 1版中依賴更新版本的某個軟件包,並且在「上線」時間N + 1落在它的表面上,我可以回滾到N,並自動獲取打包相關性N一起工作。

我們經營的私人eggbasket服務器,並配置擴建只從取包。通過允許構建一次從網絡抓取蛋,然後複製下載的蛋,初始化服務器內容。

這種方式,升級每個包都完全得到控制,我可以保證我的代碼相同的快照連續2個網絡建設將打造出了同樣的事情。當我想升級所有的時候,我會讓build再次獲取最新版本,測試測試測試,然後將我的雞蛋複製到eggbox服務器以進入生產模式。