# 优化model cache
This commit is contained in:
parent
a05b4b9cb1
commit
d9621d61c3
|
@ -26,23 +26,34 @@ def get_vol(device_id, cur_vol):
|
||||||
def get_latest(device_id):
|
def get_latest(device_id):
|
||||||
latest_key = 'device_latest_{}'.format(device_id)
|
latest_key = 'device_latest_{}'.format(device_id)
|
||||||
latest = cache.get(latest_key)
|
latest = cache.get(latest_key)
|
||||||
if not latest:
|
if latest:
|
||||||
latest = DeviceCount.objects.filter(device_id=device_id).order_by('-data_time')[0]
|
return latest
|
||||||
cache.set(latest_key, latest, 60 * 10)
|
latest = DeviceCount.objects.filter(device_id=device_id).order_by('-data_time')[0]
|
||||||
return latest
|
s = DeviceCountBaseSerializer(latest)
|
||||||
|
data = s.data
|
||||||
|
cache.set(latest_key, data, 60 * 10)
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
def get_device(device_id):
|
def get_device(device_id):
|
||||||
device_key = 'device_lon_{}'.format(device_id)
|
device_key = 'device_lon_{}'.format(device_id)
|
||||||
device = cache.get(device_key)
|
device = cache.get(device_key)
|
||||||
if not device:
|
if device:
|
||||||
qs = DeviceCount.objects.filter(~Q(longitude=0), device_id=device_id).order_by('-data_time')
|
return device
|
||||||
if qs.count() > 0:
|
qs = DeviceCount.objects.filter(~Q(longitude=0), device_id=device_id).order_by('-data_time')
|
||||||
device = qs.first()
|
if qs.count() == 0:
|
||||||
cache.set(device_key, device, 60 * 10)
|
return None
|
||||||
else:
|
device = qs.first()
|
||||||
return None
|
s = DeviceCountBaseSerializer(device)
|
||||||
return device
|
data = s.data
|
||||||
|
cache.set(device_key, data, 60 * 10)
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceCountBaseSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = DeviceCount
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
class DeviceCountSerializer(serializers.ModelSerializer):
|
class DeviceCountSerializer(serializers.ModelSerializer):
|
||||||
|
@ -160,19 +171,19 @@ class DeviceInfoSerializer(serializers.ModelSerializer):
|
||||||
except IndexError:
|
except IndexError:
|
||||||
self.latest = None
|
self.latest = None
|
||||||
if self.latest:
|
if self.latest:
|
||||||
return self.latest.count
|
return self.latest['count']
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def get_signal(self, obj):
|
def get_signal(self, obj):
|
||||||
if self.latest:
|
if self.latest:
|
||||||
return self.latest.csq
|
return self.latest['csq']
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def get_energy(self, obj):
|
def get_energy(self, obj):
|
||||||
if self.latest:
|
if self.latest:
|
||||||
if float(self.latest.vol) <= 100:
|
if float(self.latest['vol']) <= 100:
|
||||||
return '{}{}'.format(round(float(self.latest.vol), 1), '%')
|
return '{}{}'.format(round(float(self.latest['vol']), 1), '%')
|
||||||
return get_vol(obj.device_id, self.latest.vol)
|
return get_vol(obj.device_id, self.latest['vol'])
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def get_coordinate(self, obj):
|
def get_coordinate(self, obj):
|
||||||
|
@ -184,12 +195,12 @@ class DeviceInfoSerializer(serializers.ModelSerializer):
|
||||||
# query = DeviceCount.objects.filter(~Q(longitude=0), device_id=obj.device_id).order_by('-data_time')
|
# query = DeviceCount.objects.filter(~Q(longitude=0), device_id=obj.device_id).order_by('-data_time')
|
||||||
device = get_device(obj.device_id)
|
device = get_device(obj.device_id)
|
||||||
if device:
|
if device:
|
||||||
return [device.longitude, device.latitude]
|
return [device['longitude'], device['latitude']]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_time(self, obj):
|
def get_time(self, obj):
|
||||||
if self.latest:
|
if self.latest:
|
||||||
return self.latest.data_time.strftime('%Y-%m-%d %H:%M:%S')
|
return self.latest['data_time'].replace('T', ' ').replace('Z', '')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue