/usr/share/doc/pyro/examples/distributed-computing/cell/processor.py is in pyro-examples 1:3.14-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | import Pyro.core
import Pyro.naming
import Pyro.errors
import sys,os
Pyro.config.PYRO_MOBILE_CODE=1 # Enable mobile code (for the tasks)
#
# The cell processor.
# It processes tasks that it receives.
# NOTE: it is not particularly intelligent about
# what tasks to run and when!! It depends on the
# dispatcher to do this in the correct way!
#
# NOTE2: notice that this module doesn't import or use
# the actual task code implementation. It relies on Pyro's
# mobile code feature to obtain the task data and code to run!
#
class Cell(Pyro.core.ObjBase):
def __init__(self):
Pyro.core.ObjBase.__init__(self)
self.finished=False
def receivetask(self,task):
self.finished=False
self.task=task
print "received task: "+str(task)
def process(self):
print "running task..."
self.task.run()
print "task finished."
self.finished=True
def abort(self):
print "ABORT!"
self.task.abort=True
#
# Initialize the environment
#
Pyro.core.initServer()
ns=Pyro.naming.NameServerLocator().getNS()
try:
ns.createGroup(":Distributed")
except Pyro.errors.NamingError:
pass
try:
ns.createGroup(":Distributed.Cells")
except Pyro.errors.NamingError:
pass
daemon=Pyro.core.Daemon()
daemon.useNameServer(ns)
Pyro.config.PYRO_NS_DEFAULTGROUP = ":Distributed.Cells"
#
# Find the next available object name that we can use
# to register this cell processor.
# The dispatcher looks in the Pyro namespace to find
# us and the other available cells.
#
i=1
object = Cell()
while True:
try:
name="processor%d" % i
uri=daemon.connect( object ,name)
print "Connected",ns.fullName(name)
print "Cell ready."
try:
daemon.requestLoop()
except Exception:
daemon.shutdown()
print "clean shutdown."
try:
ns.unregister(name)
except Pyro.errors.NamingError:
pass
break
except Pyro.errors.NamingError,x:
i+=1
|