Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Comment rapatrier en local des objets-proxy avec rpyc (rpc call)

+2 votes

J'utilise rpyc pour administrer des serveurs distant, j'utilisais pushy mais il n'est pas maintenu, les autres outils demandent a écrire trop de lignes de code.
Ca fait le job, cependant, j'ai un soucis, un module/objet miroir est créé a distance,

@classmethod
def getMemoryRessources(self,serv):
        mach = SshMachine(serv.SERVADDRESS,user= serv.SERVUSER, password= serv.SERVPASSWORD)
        server_connection = DeployedServer(mach)
        conn = server_connection.classic_connect()
        psutil = conn.modules.psutil
        return psutil.cpu_times()

mon souci c'est que le return ne passe pas, car des que je sort de la fonction, j'ai un "ReferenceError: weakly-referenced object no longer exists", la connection est coupée.
Donc, je ne peux pas retravailler le dico en sorti de fonction distante. Auriez vous une idée de comment rapatrier ce dico simplement ? je peux faire un pickle, derrière mais bon, j'aimerais éviter d'alourdir mon code.

demandé 14-Avr-2015 par Hackolite (292 points)
edité 15-Avr-2015 par max

cc,
un post sur SO ressemble vaguement à ta question.

Pr administrer des serveurs distants, je pense que Ansible reste une option interessante :\

1 Réponse

+3 votes

Je ne connais pas le module que tu utilises, mais je pense avoir un élément de réponse. C'est une histoire de scope.

Tu crées ta connexion dans ta fonction, dans une variable locale, lorsque tu sors de la fonction, la variable n'existe plus et donc la connexion est coupée.

Une solution serait d'utiliser une variable globale pour stocker la connexion, ou regarder si le module dispose d'une feature de ce genre (je pense au g de Flask).

Ou alors j'ai rien compris au problème et c'est pas ça du tout.

répondu 14-Avr-2015 par Arza (726 points)

Mais du coup, comment je fais les modifications des données de connection à la volée ?

Tu entends quoi par modification des données de connection à la volée ?

...