from __future__ import absolute_import, unicode_literals from celery import shared_task from apps.am.models import Area from apps.third.clients import xxClient from apps.third.tapis import xxapis @shared_task def cal_area_count(): """ 计算区域内人员数量 """ for i in Area.objects.filter(type=Area.AREA_TYPE_FIX): if i.third_info.get('xx_rail', None): railId = i.third_info['xx_rail']['id'] json = {"railId": railId, "type": ""} _, res = xxClient.request(**xxapis['rail_ibeacon_list'], json=json) total_count = res['totalCount'] if total_count >= i.count_people_max: # 触发超员事件 i.count_people = total_count i.save() pass elif total_count < i.count_people_min: # 触发缺员事件 i.count_people_min = total_count i.save() pass