Python tornado.options.options.timeout() Examples
The following are 5
code examples of tornado.options.options.timeout().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
tornado.options.options
, or try the search function
.
Example #1
Source File: handler.py From webssh with MIT License | 6 votes |
def ssh_connect(self, args): ssh = self.ssh_client dst_addr = args[:2] logging.info('Connecting to {}:{}'.format(*dst_addr)) try: ssh.connect(*args, timeout=options.timeout) except socket.error: raise ValueError('Unable to connect to {}:{}'.format(*dst_addr)) except paramiko.BadAuthenticationType: raise ValueError('Bad authentication type.') except paramiko.AuthenticationException: raise ValueError('Authentication failed.') except paramiko.BadHostKeyException: raise ValueError('Bad host key.') term = self.get_argument('term', u'') or u'xterm' chan = ssh.invoke_shell(term=term) chan.setblocking(0) worker = Worker(self.loop, ssh, chan, dst_addr) worker.encoding = options.encoding if options.encoding else \ self.get_default_encoding(ssh) return worker
Example #2
Source File: cull_idle_servers.py From cloudJHub with BSD 3-Clause "New" or "Revised" License | 6 votes |
def retry(function, *args, **kwargs): """ Retries a function up to max_retries, waiting `timeout` seconds between tries. This function is designed to retry both boto3 and fabric calls. In the case of boto3, it is necessary because sometimes aws calls return too early and a resource needed by the next call is not yet available. """ max_retries = kwargs.pop("max_retries", 20) timeout = kwargs.pop("timeout", 0.25) for attempt in range(max_retries): try: ret = yield thread_pool.submit(function, *args, **kwargs) return ret except (ClientError, WaiterError) as e: app_log.warn("encountered %s, waiting for %s seconds before retrying..." % (type(e), timeout) ) yield sleep(timeout) else: print("Failure in %s with args %s and kwargs %s" % (function.__name__, args, kwargs)) #raise e
Example #3
Source File: cull_idle_servers.py From jupyterhub-deploy-teaching with BSD 3-Clause "New" or "Revised" License | 5 votes |
def cull_idle(url, api_token, timeout): """cull idle single-user servers""" auth_header = { 'Authorization': 'token %s' % api_token } req = HTTPRequest(url=url + '/users', headers=auth_header, ) now = datetime.datetime.utcnow() cull_limit = now - datetime.timedelta(seconds=timeout) client = AsyncHTTPClient() resp = yield client.fetch(req) users = json.loads(resp.body.decode('utf8', 'replace')) futures = [] for user in users: last_activity = parse_date(user['last_activity']) if user['server'] and last_activity < cull_limit: app_log.info("Culling %s (inactive since %s)", user['name'], last_activity) req = HTTPRequest(url=url + '/users/%s/server' % user['name'], method='DELETE', headers=auth_header, ) futures.append((user['name'], client.fetch(req))) elif user['server'] and last_activity > cull_limit: app_log.debug("Not culling %s (active since %s)", user['name'], last_activity) for (name, f) in futures: yield f app_log.debug("Finished culling %s", name)
Example #4
Source File: cull_idle_servers.py From FeatureHub with MIT License | 5 votes |
def cull_idle(url, api_token, timeout): """cull idle single-user servers""" auth_header = { 'Authorization': 'token %s' % api_token } req = HTTPRequest(url=url + '/users', headers=auth_header, ) now = datetime.datetime.utcnow() cull_limit = now - datetime.timedelta(seconds=timeout) client = AsyncHTTPClient() resp = yield client.fetch(req) users = json.loads(resp.body.decode('utf8', 'replace')) futures = [] for user in users: last_activity = parse_date(user['last_activity']) if user['server'] and last_activity < cull_limit: app_log.info("Culling %s (inactive since %s)", user['name'], last_activity) req = HTTPRequest(url=url + '/users/%s/server' % user['name'], method='DELETE', headers=auth_header, ) futures.append((user['name'], client.fetch(req))) elif user['server'] and last_activity > cull_limit: app_log.debug("Not culling %s (active since %s)", user['name'], last_activity) for (name, f) in futures: yield f app_log.debug("Finished culling %s", name)
Example #5
Source File: cull_idle_servers.py From cloudJHub with BSD 3-Clause "New" or "Revised" License | 4 votes |
def cull_idle(url, api_token, timeout): #last valid activity timestame cull_limit = datetime.datetime.utcnow() - datetime.timedelta(seconds=timeout) #get user list hub_api_authorization_header = { 'Authorization': 'token %s' % api_token} users_request = HTTPRequest(url=url + '/users', headers=hub_api_authorization_header ) #run request tornado-asynchronously, extract user list (contains more information) resp = yield AsyncHTTPClient().fetch(users_request) all_users = json.loads(resp.body.decode('utf8', 'replace')) #build a bunch of (asynchronous) HTTP request futures... stop_notebook_futures = [] servers_to_check = [] dont_cull_these = set() for user in all_users: #extract last activity time, determine cullability of the server. last_activity = parse_date(user['last_activity']) should_cull = last_activity.replace(tzinfo=None) < cull_limit.replace(tzinfo=None) user_name = user['name'] app_log.debug("checking %s, last activity: %s, server: %s" % (user_name, last_activity, user['server']) ) if not should_cull: dont_cull_these.add(user_name) #server should be culled: if user['server'] and should_cull: app_log.info("Culling %s (inactive since %s)", user_name, last_activity) stop_user_request = HTTPRequest(url=url + '/users/%s/server' % user_name, method='DELETE', headers=hub_api_authorization_header ) stop_notebook_futures.append( (user_name, AsyncHTTPClient().fetch(stop_user_request)) ) #Server status is None, which means actual status needs to be checked. if not user['server'] and should_cull: servers_to_check.append(user_name) #server should not be culled, just a log statement if user['server'] and not should_cull: app_log.info("Not culling %s (active since %s)", user['name'], last_activity) # Cull notebooks using normal API. for (user_name, cull_request) in stop_notebook_futures: try: yield cull_request #this line actually runs the api call to kill a server except HTTPError: #Due to a bug in Jupyterhub app_log.error("Something went wrong culling %s, will be manually killing it.", user_name) servers_to_check.append( user_name ) continue app_log.info("Finished culling %s", user_name) for user_name in servers_to_check: if user_name not in dont_cull_these: yield manually_kill_server(user_name)