2013-03-07 9 views
13

W końcu doszedłem do punktu, w którym miałem trochę wolnego czasu i chciałem dodać Celery do mojego projektu Python/Flask na Heroku. Jednak prawie wszystkie wzmianki o Selerach z dokumentów Heroku zniknęły. W artykule "Pierwsze kroki z Django" pojawił się artykuł z tutosialem, ale już go nie ma.Czy Heroku nie obsługuje już selera?

Czy "po prostu to zrobię" sam działam? Jaki jest dobry dodatek AMQP do wykorzystania jako backend na Heroku?

Odpowiedz

55

Jestem właścicielem Python w Heroku.

Seler jest nadal w pełni obsługiwany. Dokumentacja na dole przewodnika Django została usunięta, ponieważ była nieaktualna z najnowszą wersją gry Celery (v3.0) i według mnie była dość niekompletna.

Obecnie pracuję nad nową wersją Dev Center article, która szczegółowo opisuje, jak najlepiej wykorzystać Celery. Powinien zostać wkrótce opublikowany.

Jeśli chodzi o dodatek do kolejki - jestem wielkim fanem CloudAMPQ.

+7

+1 za końskie usta. – jathanism

+4

Czy zostało to opublikowane? Jest miesiąc później, ale nic nie mogę znaleźć. – speg

+1

Nie mogę się doczekać zobaczenia tego Kennetha! – Erik

3

Wygląda na to, że zmienili dokumentację. Nie jestem pewien, czy seler nie jest już obsługiwany, ponieważ jest po prostu pakietem python i możesz go po prostu zainstalować.

Oto dokumentacja na temat how to get started with Django (bez części, w której wymieniono seler podczas ostatniego oglądania). Wydaje się, że używają teraz RQ, aby zrobić to, co zrobił wcześniej seler: Background Tasks in Python with RQ. Nadal możesz znaleźć coś na temat selera here i here, ale to wszystko, co znalazłem.

Generalnie wątpię, aby seler zwyczajny został usunięty. Wpłynęłoby to na wszystkie inne aplikacje, które już mają coś skonfigurowanego w Celery. Myślę, że nadal możesz sprawić, by działało i może znaleźć jakieś artykuły z dala od dokumentów Heroku.

+0

Znalazłem te same referencje. Odniesienia do Celery'ego w pozostałych dokumentach Heroku nie są naprawdę pomocne i właściwie nie istnieją. Oczywiście, że Seler to tylko pakiet i mogę to zrobić sam, ale usunęli dokument, zmienili kolejny dokument w Pythonie na menion only rq i usunęli wtyczkę (chyba była kiedyś wtyczka). To sprawia, że ​​myślę, że odkryli problem, który sprawił, że nie działa, a nie usunął go dobrowolnie. Szukałem, ale nie mogłem znaleźć zewnętrznych samouczków. Przeszukuję trochę więcej. –

+0

Przykład, który mieli dla selera był straszny, użył brokera bazy danych dla jednego, więc nie byłbym zaskoczony, gdyby ktoś doświadczył problemów (używanie bazy danych nie jest zalecane) – asksol

+0

dlaczego nie zaleca się używania bazy danych z Seler? –

1

Myślę, że są problemy z Seler jako zadanie w tle na Heroku. Staraliśmy się tworzyć takie zadania i zabierają one całą pamięć po uruchomieniu przez około 20 minut, nawet przy DEBUG = False na Redis lub RabbitMQ. Co gorsza, pamięć NIGDY nie jest wypuszczana: za każdym razem musimy ponownie uruchomić pracownika. Ten sam kod działa bezbłędnie na gołym systemie Linux lub na komputerze Mac z Foreman. Zdarza się z bardzo prostymi czynnościami, takimi jak czytanie pliku tekstowego w pętli, pisanie do modelu Django.

2

Mimo że zajęło mi to dużo czasu, niż chciałbym przyznać, aby dowiedzieć się, jak wykonać tę pracę, jest to naprawdę proste. W swoim procfile dodaj proces selera. Będzie to wyglądać mniej więcej tak:

web: newrelic-admin run-program gunicorn -w 4 myapp.wsgi 
celery: python manage.py celeryd -c 3 --beat 

Następnie, po prostu upewnij się, że skala Dyno seler do co najmniej 1:

heroku ps:scale celery=1 

To wszystko.

+0

Witaj Josh - możesz napisać bardziej szczegółowy wpis na blogu na ten temat. Zapłacę ci 100 $. – jononomo

+0

Zapraszam do kontaktu ze mną poza witryną w celu omówienia. Dzięki. – Josh

2

W pełni obsługujemy seler na Heroku. Możesz uruchamiać pracowników podczas nazywania procesów roboczych i skalowania ich oraz uruchamiać dowolny proces. Pod względem tego, co używać jako backend, mamy wielu dostawców dodatków, które mogą wspierać to za pośrednictwem Rabbit, Redis lub innych.

Pełny podręcznik można znaleźć w witrynie devcenter pod adresem https://devcenter.heroku.com/articles/celery-heroku.