2016-05-06 1 views
0

Angenommen, ich möchte eine Funktion alle 5 Minuten ohne Cron-Job ausführen.Ist es möglich, eine Funktion in zeitgesteuerte Schleife mit django-Hintergrund-Aufgabe setzen

Was ich denke, ist eine Django-Hintergrundaufgabe zu erstellen, die diese Funktion tatsächlich aufruft, und am Ende dieser Funktion erstelle ich diese Aufgabe erneut mit schedule = say 60 * 5.

Dies bringt die Funktion effektiv in eine zeitbasierte Schleife.

Ich habe ein paar Iterationen versucht, aber ich bekomme Importfehler. Aber ist es möglich zu tun oder nicht?

Antwort

3

Nein In jedem Fall ist das nicht möglich, da dies zu zyklischen Importproblemen in Django führt. Da Sie in Tasks diese Funktion importieren müssen und in der Datei für diese Funktion müssen Sie Tasks importieren.

Also keine Strategie, die Sie nehmen, werden Sie in das gleiche Problem landen.

2

Ich habe etwas wie gemacht. Suchst du das?

import threading 
import time 

def worker(): 
    """do your stuff""" 
    return 

threads = list() 
while (true): 
    time.sleep(300) 
    t = threading.Thread(target=worker) 
    threads.append(t) 
    t.start() 
+0

Ja, das könnte dazu dienen, dass ich auch durch die Einrichtung einen cron-Jobs tun, aber ich war wirklich neugierig auf die eine Schleife mit Hintergrundaufgabe – Rohit

+0

@Rohit zu schaffen. Sie verwenden einen Thread, sodass Sie die Parallelverarbeitung verwenden können. Ich meine, Sie könnten diese Schleife als einen Thread von einer anderen Funktion bezeichnen. –

Verwandte Themen