2011-01-31 11 views
9

Używam Selera do przetwarzania wielu zadań związanych z eksploracją danych. Jedno z tych zadań łączy się ze zdalną usługą, która pozwala na maksymalnie 10 jednoczesnych połączeń na użytkownika (lub innymi słowy, to CAN przekracza 10 połączeń globalnie, ale to NIE MOŻE przekroczyć 10 połączeń dla pojedynczej pracy).Seler (Django) Ograniczanie liczby

I THINKToken Bucket (rate limiting) jest tym, czego szukam, ale nie mogę znaleźć żadnej jego implementacji.

Odpowiedz

3

Po wiele badań okazało się, że Seler nie jawnie zapewniają sposób ograniczenia liczby równoległych instancji takich jak ta, a ponadto byłoby to ogólnie uważane za złą praktykę.

Lepszym rozwiązaniem byłoby jednoczesne pobieranie w ramach jednego zadania i używanie Redis lub Memcached do przechowywania i dystrybucji innych zadań do przetworzenia.

3

Chociaż może to być zła praktyka, można użyć dedykowanego kolejkę i ograniczyć pracownika, jak:

# ./manage.py celery worker -Q another_queue -c 10