tasks.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # @Author : Rocky
  2. # @File : tasks.py
  3. # @Time : 2024/3/12 14:23
  4. # 解决models导入失败问题
  5. import django
  6. django.setup()
  7. import requests
  8. from Ansjer.Config.gatewaySensorConfig import DEVICE_TYPE, SMART_SOCKET_TOPIC, EVENT_TYPE
  9. from Service.CommonService import CommonService
  10. import time
  11. from Ansjer.celery import app
  12. from Ansjer.config import LOGGER, CONFIG_INFO, DETECT_PUSH_DOMAINS
  13. from Model.models import Device_User
  14. # ###################测试函数
  15. @app.task
  16. def hello():
  17. device_user_qs = Device_User.objects.filter(username='13138137872').values('NickName')
  18. nickname = device_user_qs[0]['NickName']
  19. info = 'celery测试日志, CONFIG_INFO:{}, nickname:{}'.format(CONFIG_INFO, nickname)
  20. LOGGER.info(info)
  21. @app.task
  22. def test(arg):
  23. time.sleep(10)
  24. print(arg)
  25. @app.task
  26. def add(x, y):
  27. print(x + y)
  28. # ###################
  29. @app.task
  30. def loocam_smart_scene(device_type, event_type, serial_number, scene_id=0):
  31. """
  32. loocam智能场景任务
  33. @param device_type: 设备类型
  34. @param event_type: 事件类型
  35. @param serial_number: 序列号
  36. @param scene_id: 场景id
  37. @return:
  38. """
  39. LOGGER.info('loocam智能场景任务,device_type:{},event_type:{},serial_number:{},scene_id:{}'.
  40. format(device_type, event_type, serial_number, scene_id))
  41. if device_type == DEVICE_TYPE['socket']:
  42. topic_name = SMART_SOCKET_TOPIC.format(serial_number)
  43. status = 1 if event_type == EVENT_TYPE['socket_power_on'] else 0
  44. msg = {
  45. 'type': 1,
  46. 'data': {'deviceSwitch': status}
  47. }
  48. CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
  49. # 没有设备任务时,最后一个任务上报场景日志
  50. if scene_id:
  51. data = {
  52. 'sceneId': scene_id,
  53. 'status': 1
  54. }
  55. url = DETECT_PUSH_DOMAINS + 'gatewayService/sceneLogPush'
  56. requests.post(url=url, data=data, timeout=8)