65 lines
1.8 KiB
Plaintext
65 lines
1.8 KiB
Plaintext
.. include:: <s5defs.txt>
|
|
|
|
=================================================
|
|
py.execnet - simple ad-hoc networking
|
|
=================================================
|
|
|
|
:Authors: Holger Krekel, merlinux GmbH
|
|
:Date: 13th March 2006
|
|
|
|
remote method invocation is cumbersome
|
|
========================================
|
|
|
|
- CORBA/RMI/SOAP model is cumbersome
|
|
- "infection" with object references throughout your program
|
|
- need to define interfaces, generate stubs/skeletons
|
|
- need to start server processes ahead of time
|
|
- complicates programming
|
|
|
|
what you want of ad-hoc networks
|
|
====================================
|
|
|
|
- ad hoc **local protocols**
|
|
- avoid defining and maintaining global interfaces
|
|
- deploy protocols purely from the client side
|
|
- zero installation required on server side
|
|
|
|
py.execnet model of ad-hoc networks
|
|
====================================
|
|
|
|
- *Gateways* can be setup via e.g. SSH logins or via Popen
|
|
- *Gateway.remote_exec* allows execution of arbitrary code
|
|
- means of communication between the two sides: *Channels*
|
|
(with send & receive methods)
|
|
- example requirements: ssh login + python installed
|
|
|
|
py.execnet.SshGateway example
|
|
====================================
|
|
|
|
interactive::
|
|
|
|
gw = py.execnet.SshGateway('codespeak.net')
|
|
|
|
channel = gw.remote_exec("""
|
|
for filename in channel:
|
|
try:
|
|
content = open(filename).read()
|
|
except (OSError, IOError):
|
|
content = None
|
|
channel.send(content)
|
|
""")
|
|
|
|
next steps / references
|
|
====================================
|
|
|
|
- ad-hoc p2p networks
|
|
- chaining channels / passing channels around
|
|
- ensure it also works nicely on win32
|
|
- btw, py.execnet is part of the py lib
|
|
|
|
http://codespeak.net/py/
|
|
|
|
.. |bullet| unicode:: U+02022
|
|
.. footer:: Holger Krekel (merlinux) |bullet| 13th March 2006
|
|
|