text: #!/usr/bin/env python
  import Pyro.core, Pyro.protocol
  import threading, time, sys, copy
  
  # worker thread code
  
  def processing(username, proxy):
  	print "Processing started for user ",username
  	time.sleep(0.5)
  	proxy.init()
  	for i in range(30):
  		sys.stdout.write(username+" ")
  		sys.stdout.flush()
  		proxy.addline("little text line")
  		time.sleep(0.1)
  	print "Stop processing for user "+username
  	proxy.close()
  
  
  
  # the Connection Validator, client side
  # This is only an example, don't use it like this in your own code!
  class SimpleClientsideConnValidator(Pyro.protocol.DefaultConnValidator):
  	def createAuthToken(self, authid, challenge, peeraddr, URI, daemon):
  		# make a single string out of the ident tuple
  		return "%s:%s" % (authid[0], authid[1])
  	def mungeIdent(self, ident):
  		# for simplicity's sake we just return the ident verbatim (username, password)
  		return (ident[0], ident[1])
  
  
  # start a set of threads, 1 per user, which perform requests
  
  users=["peter","nancy","wendy","vince","steve"]
  password = "secretpassw0rd"
  
  storageProxy = Pyro.core.getProxyForURI("PYRONAME://:test.datastorage_auth")
  storageProxy._setNewConnectionValidator( SimpleClientsideConnValidator() )
  
  for username in users:
  	# every thread needs its own user identification!
  	# so make a copy of the proxy and set the identification token.
  	proxy = copy.copy(storageProxy)
  	proxy._setIdentification( (username, password) )
  	thread = threading.Thread(target=processing, args=(username, proxy))
  	thread.daemon=False
  	thread.start()
  
  print "Wait for threads to finish."
  