Mamy proste zadanie uruchomione z django-selerem na Heroku. Coś jak:Zadanie Heroku selera w tle
@task
Simple_task():
for line in csv.reader(origin):
process_line(line)
process_line(line):
fields = parse_line(line)
reg = Model1() # Django model
reg.field1 = fields[0]
reg.field2 = fields[1]
reg.field3 = fields[2]
reg.save()
Gdzie pochodzenie jest plik CSV. Gdy plik jest duży (ponad 50 000 linii), zadanie zajmuje całą pamięć, powodując błędy R14 do czasu anulowania przez system (przy 150% dostępnej pamięci 512 MB). Pamięć nigdy nie jest zwolniona i musimy ręcznie zrestartować zadanie.
Działa na komputerze z systemem Linux lub z brygadzistą na maszynie programistycznej, działa bez żadnych problemów (wszystkie 170 000 linii). Wydaje się, że jest to wyciek pamięci TYLKO na Heroku. Nawiasem mówiąc, uruchamiamy z DEBUG = False.
Czy coś jest zepsute przy realizacji zadań selerowych Heroku? Cokolwiek możemy przegapić? Stało się to show-stoperem przy wdrażaniu na Heroku.
Każda pomoc będzie bardzo ceniona.
Po prostu ogólna sugestia debugowania: domyślam się, że nie ma to związku ani z Django, ani z Selerami. Aby to udowodnić, stworzyłem minimalną aplikację Heroku (bez Django, zwykły "główny"), który to robi i próbuje uruchomić. Jeśli się nie uda, najpierw sprawdź swój plik requirements.txt i dodaj odbitki debugowania później. Jeśli mu się to uda, zacznij stopniowo dodawać resztę, dopóki się nie zorientujesz. Powodzenia! –
Czy jesteś pewien, że nie używasz dużej ilości pamięci lokalnie i po prostu nie zauważyłeś? – JoshB