Sto cercando di capire come eseguire un processo in un thread in background in Django. Sono nuovo sia per Django che per i thread, quindi ti prego di sopportarmi se sto usando la terminologia sbagliata.Django: avvia un processo in un thread in background?
Ecco il codice che ho. Fondamentalmente vorrei iniziare start_processing
non appena viene attivata la funzione success
. Tuttavia start_processing
è il tipo di funzione che potrebbe facilmente richiedere alcuni minuti o fallire (dipende da un servizio esterno su cui non ho alcun controllo), e non voglio che l'utente debba attendere che si completi con successo prima del la vista è resa. ('Successo' per quanto li riguarda, non dipende dal risultato di start_processing
;. Sono l'unica persona che ha bisogno di preoccuparsi se non riesce)
def success(request, filepath):
start_processing(filepath)
return render_to_response('success.html', context_instance = RequestContext(request))
Dal Googling che ho fatto, la maggior parte delle persone suggerisce che i thread in background non sono usati in Django, e invece un job cron è più adatto. Ma vorrei che start_processing
iniziasse non appena l'utente arriva alla funzione di successo, piuttosto che aspettare che il processo cron venga eseguito. C'è un modo per fare questo?
Duplicato: http://stackoverflow.com/questions/844570/web-application-background-processes-newbie-design-question, tra molti altri. –
Anche molti di questi sono utili: http://stackoverflow.com/search?q=%5Bdjango%5D+process –
Dupliacte: http://stackoverflow.com/questions/1619397/how-to-start-a- long-running-process-from-django-view, http://stackoverflow.com/questions/219329/django-fastcgi-how-to-manage-a-long-running-process –