/ / Django: Dowiedz się, kiedy plik jest już zapisany po usign storage.save () - python, django, amazon-web-services, amazon-s3

Django: Wiesz, kiedy plik jest już zapisany po usign storage.save () - python, django, amazon-web-services, amazon-s3

Więc mam model Django, który ma FileField. Ten FileField zawiera ogólnie obraz. Po otrzymaniu obrazu z żądania muszę uruchomić kilka procesów analizy obrazu.

Problem polega na tym, że czasami muszę się obracaćzdjęcie przed uruchomieniem analizy (która działa w selerze, ładowanie modelu ponownie uzyskuje instancję według identyfikatora). Dostaję więc obraz, obracam go i zapisuję za pomocą:

storage.save (image_name, new_image_file), gdzie storage jest domyślnym magazynem django (przy użyciu AWS S3)

Problem polega na tym, że w niektórych drobnych przypadkach (powiedzmy1 na 1000), obraz nie jest już obracany podczas uruchamiania procesu analizy w selerze, po wykonaniu procesu obracania, ale potem, jeśli otworzę obraz, jest już obracany, więc wydaje się, że metoda zapisu zajmuje trochę czas na aktualizację pliku w pamięci (asynchronicznie) ...

Czy ktoś miał podobny problem? Czy istnieje sposób sprawdzenia, czy plik został już zaktualizowany, na przykład za pomocą wywołania zwrotnego lub jakiegoś programu obsługi?

Wielkie dzięki!

Odpowiedzi:

0 dla odpowiedzi № 1

Nie ma tutaj magicznego rozwiązania. Musisz zarządzać stanami na swoim modelu, szczególnie podczas pracy z zadaniami selera. Możesz potrzebować innego pola o nazwie state z państwami: NONE (nie są wykonywane żadne działania), PROCESSING (zadanie zostało wysłane do selera w celu przetworzenia) i DONE (obraz został obrócony)

BRAK to stan domyślny. powinieneś ustawić stan POCESSING przed wywoływanie zadania selera (a nie wewnątrz zadania selera, z tego powodu miał już błędy), a na koniec zadanie selera powinno ustawić stan na GOTOWE po zakończeniu.

Gdy zadanie jest szybkie, użytkownik nie zauważy żadnej różnicy, ale gdy zajmie to trochę czasu, możesz chcieć dodać komunikat „obraz jest przetwarzany, spróbuj ponownie” lub coś takiego

Przynajmniej tak to robię ... Mam nadzieję, że to pomaga