Эх сурвалжийг харах

ApschedulerObject初始化加上时区

locky 1 жил өмнө
parent
commit
f7ebea467e

+ 1 - 7
Controller/SensorGateway/SmartSceneController.py

@@ -252,13 +252,7 @@ class SmartSceneView(View):
             if smart_scene_qs.exists():
             if smart_scene_qs.exists():
                 return response.json(179)
                 return response.json(179)
 
 
-            # 从gateway_push表查询时区
-            gateway_push_qs = GatewayPush.objects.filter(user_id=user_id).values('tz')
-            if gateway_push_qs.exists():
-                # 截掉.00然后转为浮点型
-                tz = float(gateway_push_qs[0]['tz'][:-3])
-            else:
-                tz = 0
+            tz = CommonService.get_user_tz(user_id)
 
 
             smart_scene_dict = {
             smart_scene_dict = {
                 'user_id': user_id,
                 'user_id': user_id,

+ 4 - 3
Controller/TestApi.py

@@ -1060,11 +1060,12 @@ class testView(View):
     @staticmethod
     @staticmethod
     def add_cron_job(request_dict, response):
     def add_cron_job(request_dict, response):
         task_id = request_dict.get('task_id', None)
         task_id = request_dict.get('task_id', None)
+        timezone_offset = float(request_dict.get('timezone_offset', None))
         hour = request_dict.get('hour', None)
         hour = request_dict.get('hour', None)
         minute = request_dict.get('minute', None)
         minute = request_dict.get('minute', None)
         day_of_week = request_dict.get('day_of_week', None)
         day_of_week = request_dict.get('day_of_week', None)
-        apscheduler_obj = ApschedulerObject()
-        apscheduler_obj.cron_job(task_id, day_of_week, hour, minute)
+        apscheduler_obj = ApschedulerObject(timezone_offset)
+        apscheduler_obj.create_cron_job(apscheduler_obj.auto_hello, task_id, day_of_week, hour, minute, ('date', ))
         return response.json(0)
         return response.json(0)
 
 
     @staticmethod
     @staticmethod
@@ -1073,7 +1074,7 @@ class testView(View):
         time_stamp = request_dict.get('time_stamp', None)
         time_stamp = request_dict.get('time_stamp', None)
         time_stamp = int(time_stamp)
         time_stamp = int(time_stamp)
         apscheduler_obj = ApschedulerObject()
         apscheduler_obj = ApschedulerObject()
-        apscheduler_obj.date_job(task_id, time_stamp)
+        apscheduler_obj.create_date_job(apscheduler_obj.auto_hello, task_id, time_stamp, ('date', ))
         return response.json(0)
         return response.json(0)
 
 
     @staticmethod
     @staticmethod

+ 8 - 4
Object/ApschedulerObject.py

@@ -3,18 +3,22 @@ from apscheduler.schedulers.background import BackgroundScheduler
 from django_apscheduler.jobstores import DjangoJobStore
 from django_apscheduler.jobstores import DjangoJobStore
 from django_apscheduler.models import DjangoJob
 from django_apscheduler.models import DjangoJob
 import datetime
 import datetime
+import pytz
 
 
 
 
 class ApschedulerObject:
 class ApschedulerObject:
-    def __init__(self):
-        self.scheduler = BackgroundScheduler()
+    def __init__(self, timezone_offset=0.00):
+        # 计算时区偏移量(以分钟为单位)
+        timezone_offset_minutes = int(timezone_offset * 60)
+        timezone = pytz.FixedOffset(timezone_offset_minutes)
+        self.scheduler = BackgroundScheduler(timezone=timezone)
         self.scheduler.add_jobstore(DjangoJobStore(), 'default')
         self.scheduler.add_jobstore(DjangoJobStore(), 'default')
         self.scheduler.start()
         self.scheduler.start()
 
 
     @staticmethod
     @staticmethod
-    def auto_hello():  # 任务
+    def auto_hello(x):  # 任务
         now_time = time.time()
         now_time = time.time()
-        print('hello world:[{}]'.format(now_time))
+        print('hello world: {} {}'.format(x, now_time))
 
 
     def create_cron_job(self, func, task_id, day_of_week, hour, minute, args, second=0):  # 周期任务
     def create_cron_job(self, func, task_id, day_of_week, hour, minute, args, second=0):  # 周期任务
         job = self.scheduler.add_job(func=func, trigger='cron', day_of_week=day_of_week, hour=hour, minute=minute,
         job = self.scheduler.add_job(func=func, trigger='cron', day_of_week=day_of_week, hour=hour, minute=minute,

+ 16 - 1
Service/CommonService.py

@@ -21,7 +21,7 @@ from pyipip import IPIPDatabase
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN_SSL, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, SERVER_DOMAIN_TEST, \
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN_SSL, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, SERVER_DOMAIN_TEST, \
     SERVER_DOMAIN_CN, SERVER_DOMAIN_US, CONFIG_US, CONFIG_EUR, SERVER_DOMAIN_LIST, SERVER_DOMAIN_EUR
     SERVER_DOMAIN_CN, SERVER_DOMAIN_US, CONFIG_US, CONFIG_EUR, SERVER_DOMAIN_LIST, SERVER_DOMAIN_EUR
 from Controller.CheckUserData import RandomStr
 from Controller.CheckUserData import RandomStr
-from Model.models import iotdeviceInfoModel, Device_Info, UIDModel, AppDeviceType, UIDCompanySerialModel
+from Model.models import iotdeviceInfoModel, Device_Info, UIDModel, AppDeviceType, UIDCompanySerialModel, GatewayPush
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 
 
@@ -848,3 +848,18 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
                                            serial_number=F('company_serial__serial_number'))
                                            serial_number=F('company_serial__serial_number'))
         c_serial_info = c_serial_qs.values('mark', 'serial_number')
         c_serial_info = c_serial_qs.values('mark', 'serial_number')
         return c_serial_info[0]['serial_number'] + c_serial_info[0]['mark']
         return c_serial_info[0]['serial_number'] + c_serial_info[0]['mark']
+
+    @staticmethod
+    def get_user_tz(user_id):
+        """
+        获取用户时区
+        @param user_id: 用户id
+        @return: tz
+        """
+        # 从gateway_push表查询时区
+        gateway_push_qs = GatewayPush.objects.filter(user_id=user_id).order_by('-id').first()
+        if gateway_push_qs is None:
+            tz = 0.00
+        else:
+            # 截掉.00然后转为浮点型
+            tz = float(gateway_push_qs.tz[:-3])