本文整理汇总了Python中stubo.cache.Cache.get_request方法的典型用法代码示例。如果您正苦于以下问题:Python Cache.get_request方法的具体用法?Python Cache.get_request怎么用?Python Cache.get_request使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类stubo.cache.Cache
的用法示例。
在下文中一共展示了Cache.get_request方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_response
# 需要导入模块: from stubo.cache import Cache [as 别名]
# 或者: from stubo.cache.Cache import get_request [as 别名]
def get_response(handler, session_name):
request = handler.request
stubo_request = StuboRequest(request)
cache = Cache(get_hostname(request))
if cache.blacklisted():
raise exception_response(400, title="Sorry the host URL '{0}' has been "
"blacklisted. Please contact Stub-O-Matic support.".format(cache.host))
scenario_key = cache.find_scenario_key(session_name)
scenario_name = scenario_key.partition(':')[-1]
handler.track.scenario = scenario_name
request_id = stubo_request.id()
module_system_date = handler.get_argument('system_date', None)
url_args = handler.track.request_params
if not module_system_date:
# LEGACY
module_system_date = handler.get_argument('stubbedSystemDate', None)
trace_matcher = TrackTrace(handler.track, 'matcher')
user_cache = handler.settings['ext_cache']
# check cached requests
cached_request = cache.get_request(scenario_name, session_name, request_id)
if cached_request:
response_ids, delay_policy_name, recorded, system_date, module_info, request_index_key = cached_request
else:
retry_count = 5 if handler.settings.get('is_cluster', False) else 1
session, retries = cache.get_session_with_delay(scenario_name,
session_name,
retry_count=retry_count,
retry_interval=1)
if retries > 0:
log.warn("replication was slow for session: {0} {1}, it took {2} "\
"secs!".format(scenario_key, session_name, retries+1))
if session['status'] != 'playback':
raise exception_response(500,
title='cache status != playback. session={0}'.format(session))
system_date = session['system_date']
if not system_date:
raise exception_response(500,
title="slave session {0} not available for scenario {1}".format(
session_name, scenario_key))
session['ext_cache'] = user_cache
result = match(stubo_request, session, trace_matcher,
as_date(system_date),
url_args=url_args,
hooks=handler.settings['hooks'],
module_system_date=module_system_date)
if not result[0]:
raise exception_response(400,
title='E017:No matching response found')
_, stub_number, stub = result
response_ids = stub.response_ids()
delay_policy_name = stub.delay_policy_name()
recorded = stub.recorded()
module_info = stub.module()
request_index_key = add_request(session, request_id, stub, system_date,
stub_number,
handler.settings['request_cache_limit'])
if not stub.response_body():
_response = stub.get_response_from_cache(request_index_key)
stub.set_response_body(_response['body'])
if delay_policy_name:
stub.load_delay_from_cache(delay_policy_name)
if cached_request:
stub = StubCache({}, scenario_key, session_name)
stub.load_from_cache(response_ids, delay_policy_name, recorded,
system_date, module_info, request_index_key)
trace_response = TrackTrace(handler.track, 'response')
if module_info:
trace_response.info('module used', str(module_info))
response_text = stub.response_body()
if not response_text:
raise exception_response(500, title='Unable to find response in '
'cache using session: {0}:{1}, response_ids: {2}'.format(
scenario_key, session_name, response_ids))
# get latest delay policy
delay_policy = stub.delay_policy()
if delay_policy:
delay = Delay.parse_args(delay_policy)
if delay:
delay = delay.calculate()
msg = 'apply delay: {0} => {1}'.format(delay_policy, delay)
log.debug(msg)
handler.track['delay'] = delay
trace_response.info(msg)
trace_response.info('found response')
module_system_date = as_date(module_system_date) if module_system_date \
else module_system_date
stub, _ = transform(stub,
stubo_request,
module_system_date=module_system_date,
system_date=as_date(system_date),
function='get/response',
cache=user_cache,
hooks=handler.settings['hooks'],
#.........这里部分代码省略.........