[svn r37645] adding an example for execnet (passes doctest)
--HG-- branch : trunk
This commit is contained in:
parent
a05708848a
commit
dcafd4cd60
|
@ -48,11 +48,30 @@ With ''py.execnet'' you get the means
|
||||||
doesn't run in a kernel-level jail [#]_ in which case
|
doesn't run in a kernel-level jail [#]_ in which case
|
||||||
even that is virtualized.
|
even that is virtualized.
|
||||||
|
|
||||||
High Level Interface: **remote_exec**
|
|
||||||
|
Available Gateways/Connection methods
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
You may use one of the following connection methods:
|
||||||
|
|
||||||
|
* :api:`py.execnet.PopenGateway` a subprocess on the local
|
||||||
|
machine. Useful for jailing certain parts of a program
|
||||||
|
or for making use of multiple processors.
|
||||||
|
|
||||||
|
* :api:`py.execnet.SshGateway` a way to connect to
|
||||||
|
a remote ssh server and distribute execution to it.
|
||||||
|
|
||||||
|
* :api:`py.execnet.SocketGateway` a way to connect to
|
||||||
|
a remote Socket based server. *Note* that this method
|
||||||
|
requires a manually started
|
||||||
|
:source:py/execnet/script/socketserver.py
|
||||||
|
script. You can run this "server script" without
|
||||||
|
having the py lib installed on that remote system.
|
||||||
|
|
||||||
|
Remote execution approach
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
All gateways offer one main high level interface,
|
All gateways offer one main high level function:
|
||||||
e.g.
|
|
||||||
|
|
||||||
def remote_exec(source):
|
def remote_exec(source):
|
||||||
"""return channel object for communicating with the asynchronously
|
"""return channel object for communicating with the asynchronously
|
||||||
|
@ -62,9 +81,17 @@ e.g.
|
||||||
With `remote_exec` you send source code to the other
|
With `remote_exec` you send source code to the other
|
||||||
side and get both a local and a remote Channel_ object,
|
side and get both a local and a remote Channel_ object,
|
||||||
which you can use to have the local and remote site
|
which you can use to have the local and remote site
|
||||||
communicate data in a structured way.
|
communicate data in a structured way. Here is
|
||||||
|
an example:
|
||||||
|
|
||||||
This approach implements the idea to ``determining
|
>>> import py
|
||||||
|
>>> gw = py.execnet.PopenGateway(python="python2.3")
|
||||||
|
>>> channel = gw.remote_exec("import sys ; channel.send(sys.version_info)")
|
||||||
|
>>> channel.receive()[:2]
|
||||||
|
(2, 3)
|
||||||
|
>>> gw.exit()
|
||||||
|
|
||||||
|
`remote_exec` implements the idea to ``determine
|
||||||
protocol and remote code from the client/local side``.
|
protocol and remote code from the client/local side``.
|
||||||
This makes distributing a program run in an ad-hoc
|
This makes distributing a program run in an ad-hoc
|
||||||
manner (using e.g. :api:`py.execnet.SshGateway`) very easy.
|
manner (using e.g. :api:`py.execnet.SshGateway`) very easy.
|
||||||
|
|
Loading…
Reference in New Issue