私は PyPi上のパッケージ を初めて〜2か月前に置き、それ以来いくつかのバージョンの更新を行いました。今週、ダウンロード数の記録に気づき、何百回もダウンロードされたことに驚いた。今後数日間、ニッチな統計的テストツールボックスであるにもかかわらず、ダウンロード数が1日あたり数百増加することに驚きました。特に、古いバージョンのパッケージが引き続きダウンロードされ、最新バージョンよりも高いレートでダウンロードされる場合があります。
ここで何が起こっているのですか?
PyPiのダウンロード数にバグはありますか、それとも(私のように)大量のクローラーがオープンソースコードを取得していますか?
これは今のところ古い質問のようですが、PyPIにあるパッケージについて同じことに気づき、さらに調査しました。 PyPIは(明らかにわずかに匿名化された)ユーザーエージェントを含め、かなり詳細な ダウンロード統計 を保持していることがわかります。それから、私のパッケージをダウンロードするほとんどの人が「z3c.pypimirror/1.0.15.1」や「pep381client/1.5」のようなものであることが明らかでした。 (PEP 381は、PyPIのミラーリングインフラストラクチャについて説明しています。)
私は クイックスクリプト を作成してすべてを集計し、最初にすべてを含めてから、最も明白なボットを除外しました。 文字通り99% 私のパッケージのダウンロードアクティビティの原因は、ミラーボットによるものでした。ボットがフィルタリングされた146ダウンロードのみに対して、合計14,335ダウンロードです。そして、それは非常に明白なものを除外しているだけなので、おそらくまだ過大評価です。
PyPIがミラーを必要とする主な理由は、ミラーがあるためです。
ケアナーボンの要約ステートメントから始めます。
「PyPIがミラーを必要とする主な理由は、ミラーがあるためです。」
私はこれを少し変更します:
より多くのwayPyPIが実際に機能するためミラーリングする必要があり、追加のビット(または2つ:-)を-に提供する可能性があります- リアルトラフィック。
現時点では、リポジトリで更新する内容を知るために、メインインデックスを操作する必要があると思います。状態は、いくつかの公的にアクセス可能なフォルダー階層のタイムスタンプを介して単にアクセス可能ではありません。したがって、悪い点は、rsyncが方程式から外れていることです。良い点は、JSON、OAuth、XML-RPC、またはHTTPインターフェースを介してインデックスと通信できることです。
XML-RPCの場合:
$> python
>>> import xmlrpclib
>>> import pprint
>>> client = xmlrpclib.ServerProxy('http://pypi.python.org/pypi')
>>> client.package_releases('PartitionSets')
['0.1.1']
JSONの場合:
$> curl https://pypi.python.org/pypi/PartitionSets/0.1.1/json
約がある場合30.000個のパッケージがホストされている[ 1 ]一部はダウンロードされ、週に50.000〜300.000回[ 2 ](distribute、pip、requests、paramiko、lxml、boto、paramike、redisなど)その他)少なくともアクセシビリティの観点からは、ミラーが本当に必要です。ユーザーがpip install NeedThisPackage
失敗:待機?また、全社的なPyPIミラーは、通常はルーティングできないネットワークのプロキシとして機能するのが一般的です。最後に、virtualenvや友人を通じて有効にされた素晴らしいマルチバージョンチェックを忘れないでください。これらはすべてIMOの合法であり、パッケージの素晴らしい使用法である可能性があります...
結局のところ、ダウンロードされたパッケージでエージェント本当にが何をするかは決してわかりません:N人のユーザーに実際にそれを使用させるか、次にそれを単に上書きしてください... 使用の数と性質、純粋な潜在的なユーザーの数 ;-)より
Refs:ゲストの数は https://pypi.python.org/pypi (29303パッケージ)と http://pypi-ranking.info/week (for 2013-03-23に要求された週ごとの数)。
また、virtualenvの人気が高まっていることも考慮する必要があります。パッケージが、多くのプロジェクトで使用されるコアライブラリのようなものである場合、通常、複数回ダウンロードされます。
1人のユーザーが5つのプロジェクトを持っているとします。彼はあなたのパッケージを使用し、それぞれが独自のvirtualenvに住んでいます。要件を満たすためにpipを使用すると、パッケージはこの方法ですでに5回ダウンロードされています。次に、これらのプロジェクトは、職場、家庭、ラップトップコンピュータなどのさまざまなマシンにセットアップされます。さらに、Webアプリケーションの場合は、ステージングサーバーとライブサーバーが存在する場合があります。これを要約すると、1人で多くのダウンロードを行うことになります。
ちょっと考えてみてください…多分あなたのパッケージは単に良いです。 ;)
仮説:Travis CIやAppveyorなどのCIツールもかなり貢献しています。それは、各コミット/プッシュがパッケージのビルドとrequirements.txtのすべてのインストールにつながることを意味するかもしれません