/ / django collectstatic s django-ukladacími priestormi kopírujúcimi všetky súbory - django, amazon-s3, django-staticfiles, django-storage

django collectstatic s django-sklady repoping všetky súbory - django, amazon-s3, django-staticfiles, django-storage

Na nasadenie statických súborov do Amazonu S3 používam django.contrib.staticfiles spolu s django-úložiskami. Verzia django, ktorú používam, je 1.10.4 a verzia django-úložných priestorov je 1.5.2.

Teraz, keď spustím collectstatic, prekopíruje všetky súbory z lokálneho systému do S3, aj keď lokálne nedôjde k žiadnej zmene v súboroch. Pri pohľade na príkazový kód kolektívnej správy vidím:

V metóde delete_file:

            # The full path of the target file
if self.local:
full_path = self.storage.path(prefixed_path)
else:
full_path = None
# Skip the file if the source file is younger
# Avoid sub-second precision (see #14665, #19540)
if (target_last_modified.replace(microsecond=0) >= source_last_modified.replace(microsecond=0) and
full_path and not (self.symlink ^ os.path.islink(full_path))):
if prefixed_path not in self.unmodified_files:
self.unmodified_files.append(prefixed_path)
self.log("Skipping "%s" (not modified)" % path)
return False

Na ladenie som videl, že aj keďtarget_last_modified> = source_last_modified, ale full_path je None, a preto kontrola zlyhá a skončí vymazaním súboru na diaľku. Nie som si istý, čo robím zle, alebo či som zmeškal nejaké nastavenie, kvôli ktorému sa súbory znova nahrávajú. Zaujímavé je, že ak odstránim ďalšiu kontrolu z vyššie uvedeného kódu a skontrolujem napríklad:

if (target_last_modified.replace(microsecond=0) >= source_last_modified.replace(microsecond=0)):

to funguje dobre.

Videl som podobné otázky týkajúce sa SO, ale súväčšinou kvôli rôznym časovým pásmam S3 verzus miestny systém. V mojom prípade sú moje miestne časové pásmo aj zóna S3 rovnaké. V každom prípade vyššie uvedený hack ukazuje, že problém nie je spôsobený rozdielom časových pásiem.

odpovede:

1 pre odpoveď č. 1

Naše riešenie bolo použiť Collectfast:

https://github.com/jazzband/collectfast

Pred odovzdaním ukladá do vyrovnávacej pamäte a porovnáva kontrolné súčty md5 súborov. Radi by sme poznali hlavnú príčinu problému, ale to vyriešilo pomalosť.