Exécuter des scripts Unix côté serveur de manière asynchrone

Nous avons une collection de scripts Unix (et / ou de modules Python) qui effectuent chacun une longue tâche. Je voudrais leur fournir une interface Web qui effectue les opérations suivantes:

  • Demande que les données pertinentes soient transmises aux scripts.
  • Permet de les démarrer / arrêter / les tuer.
  • Permet de surveiller la progression et / ou d’autres informations fournies par les scripts.
  • Peut-être une sorte de journalisation (bien que les scripts fassent déjà la journalisation).

Je sais comment écrire un serveur qui le fait (par exemple en utilisant le serveur HTTP / JSON intégré de Python), mais le faire correctement n’est pas sortingvial et je ne veux pas réinventer la roue.

Existe-t-il des solutions existantes permettant de maintenir des tâches asynchrones côté serveur?

Django est idéal pour écrire des applications Web, et le module de sous-processus (subprocess.Popen en .communicate ()) est idéal pour exécuter des scripts shell. Vous pouvez lui donner un stream stdin, stdout et stderr pour la communication si vous le souhaitez.

Répondant à ma propre question, j’ai récemment vu l’annonce de Celery 1.0, qui semble faire une grande partie de ce que je recherche.

Je voudrais utiliser SGE , mais je pense que cela pourrait être excessif pour votre besoin …