Mam pewne api które generuje różne raporty, po wysłaniu POSTem dostaje id requestu i moge sprawdzać czy raport jest gotowy(czasem może być gotowy po kilku godzinach). Chce pobierać te gotowe pliki i zapisywać do bazy. Myślę zrobić klase która będzie obsługiwać endpointy, wysyłać zapytanie POST, potem monitorować status i pobierać raport do zmiennej w tej właśnie klasie(wszystko oddzielnym wątku) i następnie w pętli while będe sprawdzać czy np obiektKlasy.raport is None i jeśli nie to odpalam zapis do bazy. Ma to sens? Oczywiście kazdy raport będzie obslugiwany przez nowy obiekt w nowym wątku.
tldr: api generuje raporty(moze to trwać kilka godzin) i chce je zapisywać do pliku/bazy, potrzebuje jakiegos generycznego rozwiązania
@inevitableserendipity: Poczytaj o single point of responsibility bo to co proponujesz nie ma sensu
1. Masz funkcjonalność która wysyła POSTa i tworzy wstępny model "Raport" ze statusem "In progress" i z RequestID z posta (+ dodaj inne rzeczy jak godzina o ktorej ktos zaczal generowac raport, godzina o ktorej raport byl dostepny, id uzytkownika ktory ten raport wygenerowal, ...) 2. Masz crona który co X czasu bierze wszystkie modele "Raport"
Mam pewne api które generuje różne raporty, po wysłaniu POSTem dostaje id requestu i moge sprawdzać czy raport jest gotowy(czasem może być gotowy po kilku godzinach).
Chce pobierać te gotowe pliki i zapisywać do bazy. Myślę zrobić klase która będzie obsługiwać endpointy, wysyłać zapytanie POST, potem monitorować status i pobierać raport do zmiennej w tej właśnie klasie(wszystko oddzielnym wątku) i następnie w pętli while będe sprawdzać czy np obiektKlasy.raport is None i jeśli nie to odpalam zapis do bazy. Ma to sens? Oczywiście kazdy raport będzie obslugiwany przez nowy obiekt w nowym wątku.
tldr: api generuje raporty(moze to trwać kilka godzin) i chce je zapisywać do pliku/bazy, potrzebuje jakiegos generycznego rozwiązania
1. Masz funkcjonalność która wysyła POSTa i tworzy wstępny model "Raport" ze statusem "In progress" i z RequestID z posta (+ dodaj inne rzeczy jak godzina o ktorej ktos zaczal generowac raport, godzina o ktorej raport byl dostepny, id uzytkownika ktory ten raport wygenerowal, ...)
2. Masz crona który co X czasu bierze wszystkie modele "Raport"