from __future__ import absolute_import, unicode_literals from apps.utils.task import CustomTask from apps.am.models import Area from celery import shared_task from django.core.cache import cache from shapely.geometry import Polygon @shared_task(base=CustomTask) def cache_areas_info(): """ 缓存区域信息 """ area_fix_list = [] for i in Area.objects.filter(type=Area.AREA_TYPE_FIX).exclude(third_info__xx_rail=None): points = [] for item in i.third_info['xx_rail']['detail']['polygon']['points']: points.append((item['x'], item['y'])) area_dict = { 'id': i.id, 'floor_no': i.third_info['xx_rail']['detail']['floorNo'], 'polygon': Polygon(points), 'stay_minute_min': i.stay_minute_min, 'stay_minute_max': i.stay_minute_max } area_fix_list.append(area_dict) cache.set('area_fix_list', area_fix_list, timeout=None) return area_fix_list