2017-07-07 1 views
0

J'écris une application en utilisant Django 1.10 et Céleri. J'essaie de créer une boucle de céleri pouvant être démarrée et arrêtée via Django.Utilisation de variables globales dans Céleri: Quelle est la meilleure approche?

Mon idée ressemble à ceci (très simple):

_run = False 

def do_work(): 
    global _run 
    while _run: 
    # Do something 

@app.task 
def start(): 
    global _run 
    _run = True 
    do_work() 

@app.task 
def stop(): 
    global _run 
    _run = False 

Le problème est que le céleri est généralement exécuté dans> 1 fil de travail et _run n'est pas accessible entre les threads.

Question: Quelle est la meilleure approche pour atteindre la fonctionnalité? Im penser à la mise en place d'une variable de base de données, mais je crains que ce n'est pas la meilleure approche.

+0

Cela semble être une question XY. Pourquoi voulez-vous une boucle du tout? –

+0

La boucle interrogera les données des API externes et remplira la base de données du système. Je ne comprends pas ce que tu veux dire par 'question XY'. – Vingtoft

+0

Pourquoi utilisez-vous des tâches Celery? semble être un mauvais cas d'utilisation – Anentropic

Répondre