yzy_job.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from datetime import datetime
  4. from sqlalchemy.orm import Session
  5. from utils import *
  6. from utils.redis_util import *
  7. from models import *
  8. from exceptions import *
  9. from database import get_local_db
  10. from extensions import logger
  11. from common import YzyApi
  12. from config import settings
  13. import traceback
  14. def proc():
  15. if settings.IS_PROD == False:
  16. return
  17. YzyApi.get_cache_access_token()
  18. lock_key = "yzy_job_proc"
  19. if redis_lock(lock_key):
  20. logger.info(datetime.now())
  21. detail_url = "{}/leader/index".format(settings.YJXP_WEB_ROOT_PATH)
  22. yzy_user_id = "etk4130970pjg84tgrhapo"
  23. description = "预案名称: 茂名市自然灾害救助应急预案\n响应级别: Ⅰ级响应\n消息内容: 单位您好!《茂名市自然灾害救助应急预案》现已全面启动,特此通知您单位迅速响应,全力做好预案工作要点:负责救灾工作宣传报道协调工作。"
  24. YzyApi.send_textcard_message(yzy_user_id, "预案响应消息", description, detail_url)
  25. '''
  26. yzy_user_id = "eb4kehgy6wj4qn0jhx1dk6" # 暂时写死梦梅的账号
  27. description = "预案名称: 茂名市自然灾害救助应急预案\n响应级别: Ⅰ级响应\n消息内容: 单位您好!《茂名市自然灾害救助应急预案》现已全面启动,特此通知您单位迅速响应,全力做好预案工作要点:负责救灾工作宣传报道协调工作。"
  28. # ret = YzyApi.send_textcard_message(yzy_user_id, "预案响应消息", description, detail_url)
  29. # logger.info(ret)
  30. data = {
  31. "yzy_userid": yzy_user_id,
  32. "mobile": "13528373954",
  33. "content": description,
  34. "recorded_by": 1,
  35. "detail_url": detail_url,
  36. "foreign_key": "1",
  37. "from_scenario": "yjya",
  38. "title": "预案响应消息"
  39. }
  40. if settings.IS_STAGE:
  41. YzyApi.add_to_msg_queue(db, data)
  42. db.close()
  43. '''
  44. redis_unlock(lock_key)
  45. def yzy_msg_queue_proc(db = get_local_db()):
  46. if settings.IS_PROD == False:
  47. return
  48. lock_key = "yzy_msg_queue_job"
  49. if redis_lock(lock_key):
  50. logger.info(datetime.now())
  51. rows = db.query(YzyMsgQueue).filter(YzyMsgQueue.sent_status == 0).limit(20).all()
  52. for row in rows:
  53. try:
  54. resp = YzyApi.send_textcard_message(row.yzy_userid, row.title, row.content, row.detail_url)
  55. logger.info(resp)
  56. row.sent_time = datetime.now()
  57. if resp['errcode'] == 0:
  58. row.sent_status = 1
  59. if 'jobid' not in resp:
  60. resp['jobid'] = ''
  61. row.errmsg = resp['jobid']
  62. else:
  63. row.sent_status = 9
  64. row.errmsg = resp['errmsg']
  65. db.commit()
  66. except Exception as e:
  67. traceback.print_exc()
  68. redis_unlock(lock_key)