2017-07-10 2 views
0

Les utilisateurs nous envoient des ordres. A la réception d'une commande, nous exécutons un pipeline qui consiste à exécuter plusieurs tâches. Certaines tâches prennent des jours d'ordinateur.Can Luigi peut-il gérer des passages parallèles d'un même pipeline?

# Example pipeline 
order -> task1 -> task2 -> task3 -> Complete 

Je veux commencer à traiter chaque commande comme il arrive, donc notre cluster de calcul sera le traitement de plusieurs ordres et leur exécution associé du pipeline simultanément

# Diagram showing each order arriving then being processed over time. 

| order1 -> t1 -> t2 -> t3 -> complete 
|    order2 -> t1 -> t2 -> t3 -> complete 
|      order3 -> t1 -> t2 -> t3 -> complete 
|      order4 -> t1 -> t2 -> t3 -> complete 
|            order5 -> t1 -> t 
------------------------------------------------------------------ 
time 

Pouvez-vous faire dans Luigi? Je ne pense pas que ce soit le cas lorsque j'implémente un pipeline de test, alors essayez de démarrer une autre instance du pipeline de test, tandis que le premier est en cours d'exécution, j'obtiens la sortie suivante de la seconde instance du pipeline.

Pid(s) set([11004]) already running 

Process finished with exit code 0 

Répondre

2

Tant que les paramètres sont différents, les tâches auront des identifiants différents et peuvent s'exécuter simultanément. Si vous essayez d'exécuter la tâche avec les mêmes paramètres, de sorte que la fonction de génération d'ID génère le même ID, elle le verra déjà en cours d'exécution. Si les identifiants générés sont différents, vous pouvez certainement exécuter plus d'une tâche identique.

est ici la méthode de génération ID Tâche: https://github.com/spotify/luigi/blob/master/luigi/task.py#L118

+0

Merci pour votre réponse, J'ai posé une nouvelle question similaire avec le code et un exemple chiffré. Avez-vous une idée de la raison pour laquelle la deuxième tentative d'exécution du pipeline avec différents ID de tâche ne fonctionne pas? https://stackoverflow.com/questions/45034961/how-to-run-parallel-instances-of-a-luigi-pipeline-pid-set-already-running – UEFI