state_changes.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:valhalla 作者: LCOGT 项目源码 文件源码
def update_request_states_for_window_expiration():
    '''Update the state of all requests and user_requests to WINDOW_EXPIRED if their last window has passed'''
    now = timezone.now()
    states_changed = False
    for user_request in UserRequest.objects.exclude(state__in=TERMINAL_STATES):
        request_states_changed = False
        for request in user_request.requests.filter(state='PENDING').prefetch_related('windows'):
            if request.max_window_time < now:
                logger.info('Expiring request %s', request.id, extra={'tags': {'request_num': request.id}})
                with transaction.atomic():
                    req = Request.objects.select_for_update().get(pk=request.id)
                    if req.state == 'PENDING':
                        req.state = 'WINDOW_EXPIRED'
                        states_changed = True
                        request_states_changed = True
                        req.save()
        if request_states_changed:
            update_user_request_state(user_request)

    return states_changed
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号