Mam serwer HTTP, który prowadzi jakiś duży plik i posiada klientów Pythona (aplikacje GUI), które go pobierają.
Chcę, aby klienci pobrać plik tylko w razie potrzeby, ale mają aktualny plik na każdym uruchomieniu.

Myślałem, że każdy klient pobiera plik na każdym uruchomieniu za pomocą nagłówku HTTP-zmodyfikowany, z czasem pliku istniejącego pliku, jeśli istnieje. Czy ktoś może zasugerować, jak to zrobić w Pythonie?

Czy ktoś może zasugerować alternatywę, łatwy sposób, aby osiągnąć swój cel?

3
Uri Cohen 2 październik 2011, 03:25

3 odpowiedzi

Najlepsza odpowiedź

Wydaje mi się, że najłatwiejszym rozwiązaniem jest hosting pliku w Mercurial i Korzystanie z interfejsu API Mercurial, aby znaleźć hash pliku, pobieranie pliku, jeśli Hash zmienił się. Obliczanie hasha można zrobić jako Odpowiedź na to pytanie; W celu pobrania pliku {x0}} wystarczy.

0
Community 23 maj 2017, 12:03

Możesz dodać nagłówek o nazwie ETag, (Hash swojego pliku, MD5SUM lub SHA256 itp.), Aby porównać, czy dwa pliki są różne zamiast daty ostatniej modyfikacji

1
Kit Ho 2 październik 2011, 01:09

Zakładam teraz kilka rzeczy, ale .. Jednym rozwiązaniem byłoby mieć oddzielny plik HTTP na serwerze (Check.php), który tworzy hash / sumę kontrolną każdego hostingu. Jeśli pliki różnią się od lokalnych plików, klient pobiera plik. Oznacza to, że jeśli zawartość pliku na zmienia się na serwerze, klient zauważą zmianę, ponieważ kontrolą będzie się różnić.

Wykonaj mieszanie MD5 zawartości pliku, umieść go w bazie danych lub coś i sprawdzić przed nim przed pobraniem czegokolwiek.

Twoje rozwiązanie będzie działać, ale wymaga to, aby serwer obejmował "zmodyfikowany" datę w nagłówku na żądanie GET (niektóre software serwerów nie robi tego).

Powiedziałbym, że umieściłbym bazę danych, która wygląda jak:

[ID] [nazwa_pliku] [file_hash]

0001 moo.txt asd124kjhj124kjh12j.

0
Torxed 2 październik 2011, 00:49