zhangyong 2 months ago
parent
commit
efdbe72ede
4 changed files with 32 additions and 11 deletions
  1. 7 7
      docker-compose.yml
  2. 8 0
      sh/select.sh
  3. 8 1
      utils/redis.py
  4. 9 3
      workers/consumption_work.py

+ 7 - 7
docker-compose.yml

@@ -3,16 +3,16 @@ services:
     build:
       context: .
       dockerfile: Dockerfile
-    image: supply_job
-    container_name: supply_worker1
+    image: content_job
+    container_name: content_worker1
     restart: unless-stopped
     environment:
       - ENV=prod
     networks:
-      - supply_net
+      - content_net
     entrypoint: "python /app/workers/select_work.py"
   consumption:
-    image: supply_job
+    image: content_job
     restart: unless-stopped
     env_file:
       - product.env
@@ -20,10 +20,10 @@ services:
       - ./sh:/app/sh
       - /var/run/docker.sock:/var/run/docker.sock:ro
     networks:
-      - supply_net
+      - content_net
     deploy:
       replicas: 5
     entrypoint: sh /app/sh/select.sh
 networks:
-  supply_net:
-    name: supply_net
+  content_net:
+    name: content_net

+ 8 - 0
sh/select.sh

@@ -0,0 +1,8 @@
+#!/bin/sh
+
+export CONTAINER_INFO="$(curl -s --unix-socket /var/run/docker.sock http://docker/containers/$HOSTNAME/json)"
+export CONTAINER_INDEX="$(echo "$CONTAINER_INFO" | jq '.Name' | sed 's/^"\(.*\)"$/\1/' | awk -F'-' '{print $NF}')"
+echo "export GEMINI_API_KEY=$(eval echo \$"GEMINI_API_KEY_${CONTAINER_INDEX}")" >> /root/.bashrc
+. /root/.bashrc
+
+python /app/workers/consumption_work.py

+ 8 - 1
utils/redis.py

@@ -27,4 +27,11 @@ class RedisHelper(object):
 
     def close(self):
         if self._pool:
-            self._pool.disconnect(inuse_connections=True)
+            self._pool.disconnect(inuse_connections=True)
+
+def content_video_data(ret):
+    """分析失败视频重新写入redis"""
+    task = f"task:video_ai_pq"
+    helper = RedisHelper()
+    client = helper.get_client()
+    client.rpush(task, ret)

+ 9 - 3
workers/consumption_work.py

@@ -1,4 +1,5 @@
 import asyncio
+import json
 import os
 import sys
 import orjson
@@ -7,11 +8,12 @@ from apscheduler.triggers.interval import IntervalTrigger
 from loguru import logger
 
 from utils.aliyun_log import AliyunLogger
-
-sys.path.append('/app')
 from utils.google_ai_studio import GoogleAI
 from utils.piaoquan import PQ
-from utils.redis import RedisHelper
+from utils.redis import RedisHelper, content_video_data
+
+sys.path.append('/app')
+
 
 
 
@@ -19,7 +21,9 @@ class ConsumptionRecommend(object):
     @classmethod
     async def run(cls):
         logger.info(f"[处理] 开始获取redis数据")
+
         task = RedisHelper().get_client().rpop(name = 'task:video_ai_pq')
+
         if not task:
             logger.info('[处理] 无待执行的扫描任务')
             return
@@ -37,6 +41,8 @@ class ConsumptionRecommend(object):
         # api_key = 'AIzaSyA637WjFSjVEKLHt09wbVdB01gwzZKM0Rg'
         logger.info(f"[处理] 使用的API_KEY:{api_key}")
         text = GoogleAI.run(api_key, video_url)
+        if "[异常]" in text:
+            content_video_data(json.dumps(task))
         AliyunLogger.logging(str(video_id), task['title'], task['video_path'], "", task['type'], task['partition'], str(text))
         logger.info(f"[处理] 写入日志成功")