Planuję wdrożyć witrynę dynamiczną, którapotrzebuje pewnych zadań do okresowego wykonywania w tle, powiedzmy co godzinę lub dwie. Dane, które muszę wyprowadzać, są ściśle zależne od wyniku tych zapytań.
Problem polega na tym, że zadania te wymagająokreślony czas, np. 8-10 minut: więc jeśli użytkownik prosi o stronę, a zatem wywoływany jest określony widok, a to zadanie jest nadal w toku, wszystko idzie źle.
Oto pytanie: co muszę wdrożyć, aby poradzić sobie z tym problemem? Szukałem i znalazłem informacje na temat selera, ale nie rozumiem, jak można go rozwiązać, aby rozwiązać powyższy problem i być może wdrożyć system buforowania, który interweniuje, gdy zadania nie zostaną jeszcze zakończone.
Odpowiedzi:
2 dla odpowiedzi № 1Rozwiązaniem może być: Widok będzie wyświetlał wyniki z pamięci podręcznej, po zakończeniu zadania ten zaktualizuje wyniki z pamięci podręcznej o nowe. Możesz również użyć selera w ten sposób, gdy trafi się buforowany widok i trzeba go ponownie obliczyć, zadanie selera zostanie odłączone (widok zwróci buforowaną wartość).
Oto ciekawy przykład pojedynczego selera: http://ask.github.com/celery/cookbook/tasks.html