dla zadania jak ten:Retry Seler zadania z wykładniczy wycofać
from celery.decorators import task
@task()
def add(x, y):
if not x or not y:
raise Exception("test error")
return self.wait_until_server_responds(
jeśli zgłasza wyjątek i chcę ponowić go z boku demona, w jaki sposób można zastosować wykładniczy wycofać algorytmu, czyli po 2^2, 2^3,2^4
itp. Sekund?
Czy powtórzenie jest utrzymywane od strony serwera, tak, że jeśli pracownik zostanie zabity, następny pracownik, który się spawnuje, podejmie zadanie ponownego wykonania?
Czy wiesz, czy jest to ponowna próba po stronie serwera, czy też klient musi czekać? Jeśli klient ma czekać, to jest źle. –
O ile mi wiadomo, atrybut odliczający ustawia eta dla zadania na zapleczu MQ (np. RabbitMQ). Więc nie jest ustawiony po stronie klienta. – idanzalz
Klient nie musi czekać, dopóki nie wykonasz 'result.get()', który jest jawnym żądaniem oczekiwania na wynik, aby był gotowy, ale istnieje również argument timeout i istnieje stan RETRY, dzięki czemu możesz sprawdzić, czy zadanie jest ponowna próba (i jaki był powód ponownej próby) – asksol