def start_server(self, config=None, name='default'): '''Run the Bottle server as a thread''' from ambry.client.siesta import API import ambry.server.main from threading import Thread import time from functools import partial from ambry.client.rest import RemoteLibrary if not config: config = self.server_library_config(name) self.server_url = "http://{}".format(config['host']) global_logger.info("Checking server at: {}".format(self.server_url)) a = RemoteLibrary(self.server_url) # # Test to see of the server is already running. # try: # An echo request to see if the server is running. r = a.get_is_debug() if r.object: global_logger.info( 'Already running a debug server') else: global_logger.info( 'Already running a non-debug server') # We already have a server, so carry on return config except: # We'll get an exception refused eception if there is not server global_logger.info( 'No server, starting a local debug server') server = Thread(target = partial(ambry.server.main.test_run, config) ) server.setDaemon(True) server.start() #ambry.server.bottle.debug() # Wait for the server to start for i in range(1,10): #@UnusedVariable try: # An echo request to see if the server is running. r = a.get_test_echo('start_server') break except: global_logger.info( 'Server not started yet, waiting') time.sleep(1) r = a.get_test_echo('start_server') return config
def start_server(self, config=None, name='default'): '''Run the Bottle server as a thread''' from ambry.client.siesta import API import ambry.server.main from threading import Thread import time from functools import partial from ambry.client.rest import RemoteLibrary if not config: config = self.server_library_config(name) self.server_url = "http://{}".format(config['host']) global_logger.info("Checking server at: {}".format(self.server_url)) a = RemoteLibrary(self.server_url) # # Test to see of the server is already running. # try: # An echo request to see if the server is running. r = a.get_is_debug() if r.object: global_logger.info('Already running a debug server') else: global_logger.info('Already running a non-debug server') # We already have a server, so carry on return config except: # We'll get an exception refused eception if there is not server global_logger.info('No server, starting a local debug server') server = Thread(target=partial(ambry.server.main.test_run, config)) server.setDaemon(True) server.start() #ambry.server.bottle.debug() # Wait for the server to start for i in range(1, 10): #@UnusedVariable try: # An echo request to see if the server is running. r = a.get_test_echo('start_server') break except: global_logger.info('Server not started yet, waiting') time.sleep(1) r = a.get_test_echo('start_server') return config
def stop_server(self): '''Shutdown the server process by calling the close() API, then waiting for it to stop serving requests ''' import socket import time import ambry.client.exceptions as exc from requests.exceptions import ConnectionError from ambry.client.rest import RemoteLibrary if not self.server_url: return a = RemoteLibrary(self.server_url) try: is_debug = a.get_is_debug() except ConnectionError: # Already closed: return if not is_debug: global_logger.info("Server is not debug, won't stop") return else: global_logger.info("Server at {} is debug, stopping".format( self.server_url)) # Wait for the server to shutdown for i in range(1, 10): #@UnusedVariable try: a.post_close() global_logger.info('Teardown: server still running, waiting') time.sleep(1) except socket.error: pass # Just means that the socket is already closed except IOError: pass # Probably just means that the socket is already closed except ConnectionError: pass # Another way the socket can be closed. Thrown by requests library. except Exception as e: global_logger.error( "Got an exception while stopping: {} {}".format( type(e), e)) break time.sleep(2) # Let the socket clear
def stop_server(self): '''Shutdown the server process by calling the close() API, then waiting for it to stop serving requests ''' import socket import time import ambry.client.exceptions as exc from requests.exceptions import ConnectionError from ambry.client.rest import RemoteLibrary if not self.server_url: return a = RemoteLibrary(self.server_url) try: is_debug = a.get_is_debug() except ConnectionError: # Already closed: return if not is_debug: global_logger.info("Server is not debug, won't stop") return else: global_logger.info("Server at {} is debug, stopping".format(self.server_url)) # Wait for the server to shutdown for i in range(1,10): #@UnusedVariable try: a.post_close() global_logger.info('Teardown: server still running, waiting') time.sleep(1) except socket.error: pass # Just means that the socket is already closed except IOError: pass # Probably just means that the socket is already closed except ConnectionError: pass # Another way the socket can be closed. Thrown by requests library. except Exception as e: global_logger.error("Got an exception while stopping: {} {}".format(type(e), e)) break time.sleep(2) # Let the socket clear