def main(): retval = 0 # initialize web web_initialize() # locate Pyro name server try: import Pyro4 ns = None for i in range(get_param('name:search_maxtries', paramtype='common')): try: ns = Pyro4.locateNS() set_param('pyro-name-object', ns, paramtype='runtime') logger().info('Connected to a Pyro name server.') break except: time.sleep(get_param('name:search_interval', paramtype='common')) if ns: find_svc(get_param('services', paramtype='common')) else: logger().info('Can not connect to a Pyro name server.') except ImportError as e: logger().warn('Pyro module is not loaded.') # launch web server try: import cherrypy try: cherrypy.config.update({'server.socket_host': '0.0.0.0'}) from a3web_index import A3Index index = A3Index() cherrypy.tree.mount(index, '/', index.conf) from a3web_reset import A3Reset reset = A3Reset() cherrypy.tree.mount(reset, '/reset', reset.conf) cherrypy.engine.start() logger().info('Act3 Web server is started.') cherrypy.engine.block() except Exception as e: logger().error('Page generator is not loaded: %s'%str(e)) retval = -1 except ImportError as e: logger().error('cherrypy module is not loaded.') retval = -1 # finalize web web_finalize() return retval
def find_svc(svcnames): if not isinstance(svcnames, list) or len(svcnames)==0 or \ svcnames[0]=='web': return try: svcpyroname = get_param('%s:pyroname'%svcnames[0], paramtype='common') svc = Pyro4.Proxy(svcpyroname) set_param('pyro-%s-object'%svcnames[0], svc, paramtype='runtime') except: set_param('pyro-%s-object'%svcnames[0], None, paramtype='runtime') logger().info('Pyro %s object is not found.'%svcnames[0]) find_svc(svcnames[1:])