def lookup(account_id=None, user_id=None, session_id=None, max_expired_age=None):
q = {'Select': 'ALL_ATTRIBUTES'}
if user_id is not None:
q['KeyConditionExpression'] = Key('userId').eq(user_id)
if session_id is not None:
q['KeyConditionExpression'] = q['KeyConditionExpression'] & Key('sessionId').eq(session_id)
if account_id is not None:
q['FilterExpression'] = Attr('accountId').eq(account_id)
elif account_id is not None:
# use the account GSI
q['KeyConditionExpression'] = Key('accountId').eq(account_id)
q['IndexName'] = os.getenv('SESSION_TABLE_ACCOUNT_GSI')
if session_id is not None:
q['FilterExpression'] = Attr('sessionId').eq(session_id)
elif session_id is not None:
q['FilterExpression'] = Attr('sessionId').eq(session_id)
else:
return get_all_sessions(max_expired_age=max_expired_age)
if max_expired_age is not None:
exp_filter = Attr('expires').gte(int(time.time()-max_expired_age))
if 'FilterExpression' in q:
q['FilterExpression'] = q['FilterExpression'] & exp_filter
else:
q['FilterExpression'] = exp_filter
if 'KeyConditionExpression' in q:
return collect_results(get_session_table().query,q)
else:
return collect_results(get_session_table().scan,q)
# expensive call, so cache briefly if we have a flood of broadcast messages
dynamo_sessions.py 文件源码
python
阅读 27
收藏 0
点赞 0
评论 0
评论列表
文章目录