浏览代码

feat:修改飞书推送

zhaohaipeng 9 月之前
父节点
当前提交
0eaeeafcd1
共有 2 个文件被更改,包括 39 次插入29 次删除
  1. 3 3
      ad/01_ad_model_update_everyday.sh
  2. 36 26
      ad/ad_monitor_util.py

+ 3 - 3
ad/01_ad_model_update_everyday.sh

@@ -41,7 +41,7 @@ while true; do
   current_hour=$(date +%H)
   current_minute=$(date +%M)
   if (( current_hour > max_hour || (current_hour == max_hour && current_minute >= max_minute) )); then
-    msg="大数据数据生产校验失败 \n\t分区: ${today}10"
+    msg="大数据数据生产校验失败, 分区: ${today}10"
     echo -e "$LOG_PREFIX -- 大数据数据生产校验 -- ${msg}"
     /root/anaconda3/bin/python ad/ad_monitor_util.py --level error --msg "$msg" --start "$start_time" --elapsed "$elapsed"
     exit 1
@@ -258,9 +258,9 @@ echo -e "$LOG_PREFIX -- 模型备份 -- 模型备份完成: 耗时 $step_elapsed
 
 
 step_end_time=$(date "+%Y-%m-%d %H:%M:%S")
-msg="广告模型文件更新完成 \n\t \n\t 新模型AUC: $new_auc \n\t 线上模型AUC: $online_auc AUC差值: $auc_diff_abs \n\t 模型上传路径: $online_model_path \n\t"
+msg="\n\t - 广告模型文件更新完成 \n\t - 新模型AUC: $new_auc \n\t - 线上模型AUC: $online_auc  \n\t - AUC差值: $auc_diff_abs \n\t - 模型上传路径: $online_model_path"
 echo -e "$LOG_PREFIX -- 模型更新完成 -- $msg: 耗时 $step_elapsed"
 elapsed=$(($(date +%s -d "$step_end_time") - $(date +%s -d "$start_time")))
-/root/anaconda3/bin/python ad/ad_monitor_util.py --level error --msg "$msg" --start "$start_time" --elapsed "$elapsed"
+/root/anaconda3/bin/python ad/ad_monitor_util.py --level info --msg "$msg" --start "$start_time" --elapsed "$elapsed"
 
 # 32 16 * * * cd /root/zhangbo/recommend-emr-dataprocess && /bin/sh ./ad/01_ad_model_update_everyday.sh > logs/01_update_eventday$(date +\%Y-\%m-\%d_\%H).log 2>&1

+ 36 - 26
ad/ad_monitor_util.py

@@ -23,18 +23,16 @@ level_header_title_content_map = {
 }
 
 
-def send_msg_to_feishu(webhook, key_word, msg_text):
+def send_card_msg_to_feishu(webhook, key_word, card_json):
     """发送消息到飞书"""
-    print(f"推送飞书消息内容: {msg_text}")
     headers = {'Content-Type': 'application/json'}
     payload_message = {
-        "msg_type": "text",
-        "content": {
-            "text": '{}: {}'.format(key_word, msg_text)
-        }
+        "msg_type": "interactive",
+        "card": card_json
     }
-    # response = requests.request('POST', url=webhook, headers=headers, data=json.dumps(payload_message))
-    # print(response.text)
+    print(f"推送飞书消息内容: {json.dumps(payload_message)}")
+    response = requests.request('POST', url=webhook, headers=headers, data=json.dumps(payload_message))
+    print(response.text)
 
 
 def seconds_convert(seconds):
@@ -44,40 +42,52 @@ def seconds_convert(seconds):
     return f"{hours}小时 {minutes}分钟 {seconds}秒"
 
 
-def _monitor(level, msg, start, elapsed):
+def _monitor(level, msg: str, start, elapsed):
     """消息推送"""
     now = datetime.datetime.now()
     if now.hour > 6:
+        msg = msg.replace("\\n", "\n").replace("\\t", "\t")
         mgs_text = f"- 当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}" \
                    f"\n- 任务开始时间: {start}" \
                    f"\n- 任务耗时: {seconds_convert(elapsed)}" \
                    f"\n- 任务描述: {msg}"
         card_json = {
-            "config": {
-                "wide_screen_mode": "true"
-            },
-            "elements": [
-                {
-                    "tag": "div",
-                    "text": {
+            "config": {},
+            "i18n_elements": {
+                "zh_cn": [
+                    {
+                        "tag": "markdown",
+                        "content": "",
+                        "text_align": "left",
+                        "text_size": "normal"
+                    },
+                    {
+                        "tag": "markdown",
                         "content": mgs_text,
-                        "tag": "lark_md"
+                        "text_align": "left",
+                        "text_size": "normal"
                     }
-                }
-            ],
-            "header": {
-                "template": level_header_template_map[level],
-                "title": {
-                    "content": level_header_title_content_map[level],
-                    "tag": "plain_text"
+                ]
+            },
+            "i18n_header": {
+                "zh_cn": {
+                    "title": {
+                        "tag": "plain_text",
+                        "content": level_header_title_content_map[level]
+                    },
+                    "subtitle": {
+                        "tag": "plain_text",
+                        "content": ""
+                    },
+                    "template": level_header_template_map[level]
                 }
             }
         }
 
-        send_msg_to_feishu(
+        send_card_msg_to_feishu(
             webhook=server_robot.get('webhook'),
             key_word=server_robot.get('key_word'),
-            msg_text=json.dumps(card_json)
+            card_json=card_json
         )