2012-03-10 18 views
63

Po raz pierwszy wstawiłam a package on PyPi ~ 2 miesiące temu i od tego czasu wprowadzono pewne aktualizacje wersji. Zauważyłem, że w tym tygodniu licznik pobrań się liczy, i był zaskoczony, że został pobrany setki razy. W ciągu kilku następnych dni byłem bardziej zaskoczony, że liczba pobrań wzrosła o setki: dziennie, mimo że jest to niszowy zestaw narzędzi do testowania statystycznego. W szczególności starsze wersje pakietu są nadal pobierane, czasami z wyższymi stawkami niż najnowsza wersja.Liczba operacji pobierania PyPi wydaje się nierealistyczna

Co się tutaj dzieje?

Czy w pobieranym liczniku PyPi występuje błąd, czy też istnieje mnóstwo robotów chwytających kod źródłowy (tak jak moje)?

+2

gratulacje! nie widzę tego zachowania dla moich pakietów ... widzę niektóre pliki do pobrania, ale nie tak wiele (może 10-100 w nowej wersji?). może naprawdę masz użytkowników ?! powerlaws są dość modne ... –

+1

Nie mogą być tak modne! Przesłałem również [another] (http://pypi.python.org/pypi/avalanchetoolbox), BARDZO specjalistyczny pakiet analiz naukowych (avalanchetoolbox) w tym samym czasie, który ma bardzo podobne zachowanie (> 1000 pobrań w ciągu 1,5 miesiąca we wszystkich wersjach). Na świecie nie ma tysiąca osób, które mogłyby uznać ten pakiet za interesujący, więc coś musi być nie w porządku. Jako że avalanchetoolbox polega na powerlaw, być może jedna osoba faktycznie zainteresowana pakietem ustawi zadanie cron, aby automatycznie sprawdzać i pobierać aktualizacje, a praca jest błędna? – jeffalstott

+1

Przepraszam, spóźniłem się na herbatę, ale stackoverflow jest w pewnym sensie ponadczasowy, prawda? Zauważyłem, że PyPI oferuje plik binarny z systemem Windows .exe i tylko format pakietu tar.gz jako format pakietu źródłowego dla twojego pakietu powerlaw. Jeśli zamiast tego zaoferowałbyś .zip, .tar.bz2 i .tar.gz (wszystkie jako formaty źródłowe), możesz uzyskać * some * hint, odejmując nieco. ** Hipoteza **: użytkownik systemu Windows bierze .zip. Większość plików .tar.gz i .tar.bz2 może pochodzić z dublowania. Ma sens? – Dilettant

Odpowiedz

72

To jest stare pytanie na ten temat, ale zauważyłem to samo w przypadku pakietu, który mam na PyPI i zbadałem dalej. Okazuje się, że PyPI zachowuje się dość szczegółowo download statistics, w tym (podobno nieco anonimizowane) programy użytkownika. Z tego wynikało, że większość osób pobierających mój pakiet to rzeczy takie jak "z3c.pypimirror/1.0.15.1" i "pep381client/1.5". (PEP 381 opisuje dublowanie infrastruktury PyPI.)

pisałem a quick script się zgadzać wszystkiego, pierwszy w tym wszystkie z nich, a następnie opuszcza się najbardziej oczywiste boty, a okazuje się, że dosłownie 99% z pobrania aktywność dla mojego pakietu została spowodowana przez mirrorboty: łącznie 14,335 pobrań, w porównaniu do 146 pobrań z filtrowanymi botami. I po prostu pomijamy te najbardziej oczywiste, więc prawdopodobnie nadal są zawyżone.

Wygląda na to, że głównym powodem, dla którego PyPI potrzebuje lusterek jest to, że je ma.

+0

https://pypi.python.org/stats/ prawdopodobnie otrzymał ostatnią aktualizację w maju 2013 r. –

+7

Jak mogę sprawdzić moje * prawdziwe * pobrania teraz, gdy strona stanu jest wyłączona? Według użytkownika w #python jest to spowodowane zmianą CDN do pobierania pakietów. – Winny

+20

Link wydaje się być martwy :( – tacaswell

10

Należy również wziąć pod uwagę, że virtualenv jest coraz bardziej popularny. Jeśli twoja paczka jest czymś w rodzaju głównej biblioteki, którą ludzie używają w wielu swoich projektach, zazwyczaj pobierają ją wiele razy.

Uważa się, że pojedynczy użytkownik ma 5 projektów, w których używa pakietu, a każdy z nich mieszka we własnym virtualenv. Korzystanie z pip, aby spełnić wymagania, pakiet jest już pobrany 5 razy w ten sposób. Następnie projekty te można skonfigurować na różnych urządzeniach, takich jak komputery robocze, komputery domowe i laptopy, a ponadto w przypadku aplikacji internetowej może istnieć serwer pośredniczący i serwer aktywny. Podsumowując, otrzymujesz wiele pobrań od jednej osoby.

Po prostu myśl ... może twoja paczka jest po prostu dobra. ;)

+0

Zobacz odpowiedź na komentarz Andrew Cooke'a; Pakiet B polega na Pakiecie A, więc jeśli Pakiet B jest popularny, ma sens, ale zawartość Pakietu B jest po prostu nie tak popularna. – jeffalstott

11

Począwszy Cairnarvon oświadczeniu podsumowującym:

„Wygląda na to główny powód PyPI potrzebuje lustra dlatego, że je ma.”

bym nieco zmodyfikować to:

To może być bardziej sposób PyPI faktycznie działa, a zatem musi być dublowane, które mogłyby przyczynić się dodatkowy kawałek (lub dwa :-) do prawdziwy ruch.

W tej chwili MUSISZ współdziałać z głównym indeksem, aby wiedzieć, co zaktualizować w swoim repozytorium. Stan jest nie tylko dostępny poprzez znaczniki czasu w niektórych publicznie dostępnych hierarchiach folderów.Tak więc, zła rzecz jest taka, że ​​rsync jest poza równaniem. Dobrą rzeczą jest to, że MOŻNA rozmawiać z indeksem za pośrednictwem interfejsów JSON, OAuth, XML-RPC lub HTTP.

XML-RPC:

$> python 
>>> import xmlrpclib 
>>> import pprint 
>>> client = xmlrpclib.ServerProxy('http://pypi.python.org/pypi') 
>>> client.package_releases('PartitionSets') 
['0.1.1'] 

Dla JSON np .:

$> curl https://pypi.python.org/pypi/PartitionSets/0.1.1/json 

Jeśli są ok. 30 000 pakietów hostowanych [1] z niektórymi pobieranymi od 50 000 do 300 000 razy w tygodniu [2] (takich jak distribute, pip, requests, paramiko, lxml, boto, paramike, redis i inne) naprawdę potrzebujesz lusterek przynajmniej z perspektywy dostępności. Wyobraź sobie, co robi użytkownik, gdy pip install NeedThisPackage nie powiedzie się: Poczekaj? Również szerokopasmowe mirrory PyPI są dość powszechne, działając jako serwery proxy dla sieci, które w przeciwnym razie nie są możliwe do podrobienia. Wreszcie nie zapomnij o cudownym sprawdzaniu wielu wersji włączonym przez virtualenv i znajomych. To wszystko jest zgodne z prawem IMO i potencjalnie wspaniałym wykorzystaniem pakietów ...

W końcu nigdy nie wiesz, co naprawdę robi agent z pobranym pakietem: Czy N użytkownicy naprawdę go używają lub po prostu go nadpisują następnym razem. .. i po wszystkim, autorzy pakietów IMHO powinni bardziej dbać o liczby i charakteru zastosowań, niż czysta liczby potencjalnych użytkowników ;-)


referencjach: the guestimated numery są od https://pypi.python.org/pypi (29303 pakiety) i http://pypi-ranking.info/week (dla cotygodniowego nu mbers, zgłoszony 2013-03-23).

+1

To, co mówisz, powinno sprawić, że moje telefony do domu będą za każdym razem używane, jeśli chcę wiedzieć, jak wielu użytkowników mam. (Żartuję.) – ArtOfWarfare

+0

@ArtOfWarfare Nie, sugerowałbym raczej zignorować rozmytą część, tak jak my, implementatorzy, robimy to, choć rzadko z rasami i pominięciami w naszym kodzie: "wygląda dobrze, działa!" Next() ... ";-) – Dilettant

2

Hipoteza: narzędzia CI, takie jak Travis CI i Appveyor, również mają duży wkład. Może to oznaczać, że każde zatwierdzenie/wypychanie prowadzi do kompilacji pakietu i instalacji wszystkiego w wymaganiach. Txt

Powiązane problemy