uso metodo funcion python grid

python - metodo - tkinter pack



Ejecute el código arbitrario python de forma remota, ¿se puede hacer? (6)

Parece que quieres hacer lo siguiente.

  • Definir un espacio de sistema de archivos compartido.

  • Coloque TODA su fuente python en este espacio compartido del sistema de archivos.

  • Defina agentes simples o servidores que "execfile" un bloque de código.

  • Su cliente luego contacta al agente (el protocolo REST con métodos POST funciona bien para
    esto) con el bloque de código. El agente guarda el bloque de código y realiza un execfile en ese bloque de código.

Como todos los agentes comparten un sistema de archivos común, todos tienen la misma estructura de biblioteca de Python.

Lo hacemos con una aplicación WSGI simple que llamamos "servidor por lotes". Tenemos un protocolo RESTful para crear y verificar solicitudes remotas.

Estoy trabajando en un sistema de cuadrícula que tiene varias computadoras muy poderosas. Estos se pueden usar para ejecutar funciones de Python muy rápidamente. Mis usuarios tienen una serie de funciones de python que tardan mucho tiempo en calcular en estaciones de trabajo, idealmente les gustaría poder llamar a algunas funciones en un servidor potente remoto, pero parece que se ejecutan localmente.

Python tiene una función antigua llamada "aplicar": en la actualidad es inútil que python admita la sintaxis de llamadas extendidas (por ejemplo ** argumentos); sin embargo, debo implementar algo que funcione así:

rapply = Rapply( server_hostname ) # Set up a connection result = rapply( fn, args, kwargs ) # Remotely call the function assert result == fn( *args, **kwargs ) #Just as a test, verify that it has the expected value.

Rapply debería ser una clase que se puede usar para ejecutar remotamente algún código arbitrario ( fn podría ser literalmente cualquier cosa) en un servidor remoto. Devolverá el resultado que rapply función de rapply . El "resultado" debería tener el mismo valor que si hubiera llamado a la función localmente.

Supongamos ahora que fn es una función proporcionada por el usuario. Necesito alguna forma de enviarla por el cable al servidor de ejecución. Si pudiera garantizar que fn siempre fuera algo simple, podría ser una cadena que contenga el código fuente de Python ... pero ¿y si no fuera tan simple?

¿Qué pasaría si fn pudiera tener dependencias locales: podría ser una función simple que utiliza una clase definida en un módulo diferente, hay una forma de encapsular fn y todo lo que fn requiere que no sea una biblioteca estándar? Una solución ideal no requeriría que los usuarios de este sistema tengan mucho conocimiento sobre el desarrollo de Python. Simplemente quieren escribir su función y llamarla.

Solo para aclarar, no estoy interesado en discutir qué tipo de protocolo de red podría usarse para implementar la comunicación entre el cliente y el servidor. Mi problema es cómo encapsular una función y sus dependencias como un único objeto que se puede serializar y ejecutar de forma remota.

Tampoco me interesan las implicaciones de seguridad de ejecutar código arbitrario en servidores remotos; digamos que este sistema está destinado exclusivamente a la investigación y se encuentra dentro de un entorno fuertemente delimitado por cortafuegos.


Puede usar una conexión SSH a la PC remota y ejecutar los comandos en la otra máquina directamente. Incluso podría copiar el código python en la máquina y ejecutarlo.



Stackless tenía la capacidad de extraer y desmantelar el código de ejecución. Lamentablemente, la implementación actual no admite esta característica.


Sintaxis:

cat ./test.py | sshpass -p ''contraseña'' ssh usuario @ remote-ip "python - script-arguments-si-any para el script test.py"

1) aquí "test.py" es el script python local. 2) sshpass utilizado para pasar la contraseña ssh a la conexión ssh


Eche un vistazo a PyRO (objetos remotos de Python). Tiene la capacidad de configurar servicios en todas las computadoras de su clúster e invocarlos directamente o indirectamente a través de un servidor de nombres y un mecanismo de suscripción de publicación.