本文整理汇总了Python中tornado.options.options.timeout方法的典型用法代码示例。如果您正苦于以下问题:Python options.timeout方法的具体用法?Python options.timeout怎么用?Python options.timeout使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tornado.options.options
的用法示例。
在下文中一共展示了options.timeout方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: ssh_connect
# 需要导入模块: from tornado.options import options [as 别名]
# 或者: from tornado.options.options import timeout [as 别名]
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
示例2: retry
# 需要导入模块: from tornado.options import options [as 别名]
# 或者: from tornado.options.options import timeout [as 别名]
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
示例3: cull_idle
# 需要导入模块: from tornado.options import options [as 别名]
# 或者: from tornado.options.options import timeout [as 别名]
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)
示例4: cull_idle
# 需要导入模块: from tornado.options import options [as 别名]
# 或者: from tornado.options.options import timeout [as 别名]
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)