1

pip/buildout を使用して依存関係をインストールするさまざまな python ベースのプロジェクトを構築しています。しかし、誰かが github プロジェクトを削除して私のアプリを無効にしたり、ネットワークが停止してデプロイを実行できなくなったりするという考えは好きではありません。

他の人はこれをどのように解決しますか?

さまざまなアイデアがありますが、おそらく最も有望と思われるのは、ある種のキャッシング プロキシ サーバーでしょう。ダウンロードしたプロジェクトのコピーをキャッシュし、キャッシュされたバージョンを提供する前に (ネット接続がある場合) 更新を定期的にチェックするこの内部プロキシ サーバーを使用するように pip を指示します。

このようなものはすでに存在しますか?

使用事例:

Web サーバー 1 にデプロイするプロジェクトがあります。リモートの依存関係を使用して新しい機能を追加します。実稼働 Web サーバーに更新するときに、PyPi がダウンしているためデプロイできません。あるいは、新しい Web サーバーをセットアップするときに、依存関係が github などから消えてしまったのかもしれません。

より広い世界で何が起こっても、展開/開発環境を常に起動できるようにするにはどうすればよいですか?

また、デプロイするときは、既存のコードの上にデプロイしません。むしろ、何か問題が発生した場合にロールバックできるように、新しい virtualenv を構築してそれに切り替えます。したがって、展開するたびに、環境を再構築する必要があり、依存関係が存在する必要があります。

そのため、依存関係をホストしているサーバーへの短期的なネットワーク停止を防ぎ、プロジェクトが削除されないようにするソリューションを探しています。

4

3 に答える 3

0

まったく同じ要件があり、buildout を使用して展開を管理しています。システム全体にパッケージの依存関係をインストールしないようにしています。buildout にそれらすべての卵を自分の buildout にインストールさせます。そうすれば、プロジェクトのリビジョン N+1 のパッケージの新しいバージョンに依存し、「稼働」時に N+1 が直面した場合、N にロールバックして、パッケージの依存関係を自動的に取得できます。 Nが協力しました。

プライベートなeggbasketサーバーを実行し、そこからのみパッケージを取得するようにビルドアウトを構成します. サーバーのコンテンツは、ビルドアウトがネットワークから卵を一度取得できるようにしてから、ダウンロードした卵をコピーすることによって初期化されました。

このようにして、各パッケージへのアップグレードは完全に制御され、コードの同じスナップショットの 2 つの連続したビルドアウトが同じものをビルドすることを保証できます。すべてをアップグレードしたいときは、ビルドアウトに最新バージョンを再度フェッチさせ、テストテストテストを実行してから、卵を Eggbasket サーバーにコピーして本番モードにします。

于 2012-01-12T18:03:50.700 に答える
0

You should keep a "reference copy" of the projects on which you depend.

If someone removes the project from GitHub (and PyPi and all the mirrors, and every other site on the net) then you have the source and can now distribute it.

于 2012-01-12T16:59:50.150 に答える
0

これは私が探しているものです:

http://pypi.python.org/pypi/collective.eggproxy

于 2012-01-13T13:03:18.560 に答える