2016-06-20 9 views
0

Hallo Ich möchte einen Hintergrund-Thread starten, der das erste Mal ausgeführt wird, wenn meine Anwendung ausgeführt wird. Ich habe es mit der Funktion ready() der Anwendungskonfiguration implementiert.Django-Ausführungscode bei Anwendungsstart, aber nicht bei Migrationen

class MyappConfig(AppConfig): 
    name = 'myApp' 

    def ready(self): 
     try: 
      thread = threading.Thread(target=xxxx) 
     except: 
      pass   

Problem ist, dass diese Methode aufgerufen wird, wenn Django auch seine Migrationen ausführt, was es nicht tun sollte. Wie kann ich das verhindern?

Ich habe versucht Django Hintergrundaufgaben verwenden, aber es einfach gewohnt die Aufgabe läuft bei allen

+1

Was versuchst du mit diesem Thread zu erreichen? Es ist sehr wahrscheinlich, dass dies nicht das richtige Werkzeug für die vorliegende Aufgabe ist. – spectras

+0

Ich möchte, dass dieser Thread einige Daten im Hintergrund synchronisiert. –

+0

Sie müssen genauer sein. Welche Daten? Von wo kommst du? Unter welchen Umständen geändert? – spectras

Antwort

1

können Sie vermeiden, die Ausführung von Code, wenn das Skript mit „Python manage.py [Migration]“ genannt wird:

import sys 
if not 'manage.py' in sys.argv: 
    .... 
+0

Tx wird es versuchen –

+1

Was ist mit 'django-admin'? Sie könnten stattdessen 'wenn nicht 'migrieren' in sys.argv' –

+0

Ich tat als' wenn nicht 'runserver' in sys.argv: zurückgeben ' –

Verwandte Themen