2017-08-05 1 views
1

J'ai un réseau fermé et sécurisé. Je veux passer mon code à l'exécuteur et l'exécuter ici. Je veux être capable de voir la sortie de la console (progression/info) pendant qu'elle le fera. Donc, disons que nous avions une fonction qui ne prend aucun argument dans notre code client actuel, comment l'exécuter sur le serveur et récupérer la sortie? Existe-t-il un framework Python pour un tel cas d'utilisation?Comment exécuter les fonctions du client à distance?

+0

Vous devez lire le tutoriel de David Beazley [original generators] (http://dabeaz.com/generators/) (sélectionnez les diapositives de présentation). Portez une attention particulière à la partie 7. Pour la sortie, faites attention à la partie 5 où il discute de «tailing a file». –

Répondre

0

Vous n'avez pas spécifié assez de détails pour donner une réponse élaborée. Par exemple, quelle est l'échelle de votre système, combien d'exécutants y aura-t-il, si elle doit évoluer automatiquement et cetera.

Cependant, pour ce que vous avez demandé, Pyro4 devrait être capable de le faire pour vous. Il vous permet d'appeler une fonction membre sur une machine distante comme si elle était locale. Cela vous oblige à exécuter un petit processus serveur sur vos noeuds d'exécuteur.

Si vous capturez sys.stdout dans l'exécuteur et que vous générez les lignes en tant que résultats de générateur, vous pouvez également diffuser la sortie vers l'application appelante, car Pyro4 prend en charge les générateurs distants. Vous voudrez peut-être tamponner la sortie si vous ne voulez pas de retards inutiles dans votre exécuteur.

éditer: la prochaine version de Pyro 4.62 introduit le support du sérialiseur 'cloudpickle'. Pyro4 a supporté le sérialiseur «aneth» depuis longtemps. Les deux vous permettent d'envoyer la fonction elle-même au serveur. Cela signifie qu'une fois que vous avez un (très petit) serveur en cours d'exécution qui accepte un objet appelable, vous pouvez alors envoyer n'importe quoi vous voulez qu'il soit exécuté à distance.