2017-04-26 1 views
2

nos systèmes sont essentiellement des serveurs Windows exécutant des applications C# et Powershell conjointement avec MS SQL Server. Nous disposons d'une solution WorkflowManagement interne capable d'exécuter des tâches exécutant EXE/BAT/PS1 et même d'appeler des fonctions DLL.Exécutez les tâches .EXE et Powershell avec Airflow

Maintenant j'évalue si Apache Airflow est une meilleure solution pour nous. Mon plan naïf jusqu'à présent est d'exécuter le planificateur de flux d'air sur une machine Linux, puis de laisser les consommateurs s'exécuter sur des machines Windows. Mais comment puis-je configurer le consommateur pour exécuter une tâche .exe par exemple? Dois-je créer un Wrapper-Service qui prend les appels HTTP, puis exécute les fichiers .Exe?

Répondre

2

Je pense que les consommateurs que vous mentionnez sont appelés «travailleurs» dans le flux d'air. Les travailleurs typiques exécutent un exécuteur qui ne fonctionne pas sous Windows.

En théorie, vous pouvez installer un serveur ssh sur vos fenêtres, puis utiliser SSHExecuteOperator pour exécuter les commandes exe et ainsi de suite.

Cela fonctionnerait probablement mieux qu'une application HTTP car vos tâches dans le flux d'air resteraient "en cours d'exécution" pendant que la commande ssh était en cours d'exécution et passeraient automatiquement au succès ou échoueraient en conséquence. Avec un HTTP impl, il vous faudrait implémenter cette fonctionnalité vous-même si vous vouliez bien intégrer le flux d'air.

+3

Merci pour votre réponse! J'ai trouvé une autre solution, probablement meilleure: pywinrm! https://pypi.python.org/pypi/pywinrm Avec cela, vous pouvez utiliser Windows Remote PowerShell via python. Donc, je définis une tâche via python et j'importe la bibliothèque pywinrm puis je peux exécuter toutes les commandes que je veux, comme invoquer un exefile – hmrc87