/usr/share/doc/pyro/examples/maxclients/client.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 | #!/usr/bin/env python
#
# Notice: this client doesn't use the base testclient.py code
# because this one has to do special tests with creating proxies.
#
import Pyro.naming, Pyro.core
import Pyro.errors
from Pyro.protocol import getHostname
Pyro.core.initClient()
Pyro.config.PYRO_NS_DEFAULTGROUP=':test' # default namespace group
Pyro.config.PYRO_TRACELEVEL=3
Pyro.config.PYRO_LOGFILE='client_log'
print 'Check the logfile: client_log'
locator = Pyro.naming.NameServerLocator()
print 'Searching Naming Service...',
ns = locator.getNS()
print 'Naming Service found at',ns.URI.address,'('+(Pyro.protocol.getHostname(ns.URI.address) or '??')+') port',ns.URI.port
print 'binding to object'
try:
URI=ns.resolve('maxclients')
print 'URI:',URI
except Pyro.core.PyroError,x:
print 'Couldn\'t bind object, nameserver says:',x
raise SystemExit
print '---- trying to create a bunch of proxy objects'
objects=[]
for i in range(20):
ok=0
while not ok:
try:
print 'creating proxy object',i
obj=Pyro.core.getProxyForURI(URI)
# Pyro 1.2+ notice: the following method call
# actually binds the object. Just creating a proxy
# doesn't. You can create many, many proxies without
# a single connection to the server. Try commenting
# the setname call out and notice that all proxies
# are created successfully, and a crash occurs only
# later on. (line 66, where a method call is made and
# the object is connected).
obj.setname(i) # remote name
obj.__dict__['localname']=i # local (proxy) name
objects.append(obj)
ok=1
except Pyro.errors.ConnectionDeniedError,x:
# Server denied the new connection.
# A possible solution is to delete another one we don't need
# anymore and to try again.
print 'Error creating proxy object:',x
print ' -> removing old proxy and trying again...'
if objects:
del objects[0]
for obj in objects:
print 'object',id(obj),'is called remotely:',obj.getname(), 'and locally:',obj.__dict__['localname']
|