Explorar el Código

优化AI推送代码-配置文件,上传图片函数

locky hace 2 años
padre
commit
74bbc8bad3

+ 23 - 22
AnsjerPush/cn_config/cn_formal_config.py

@@ -1,22 +1,30 @@
-#!/usr/bin/env python3  
-# -*- coding: utf-8 -*-  
 """
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: Ansjer
-@software: PyCharm
-@DATE: 2018/7/2 14:06
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: Conf.py
-@Contact: chanjunkai@163.com
+独立于config.py的配置文件
 """
-# 主要静态变量配置文件
-import datetime, os
+import os
+import datetime
 
+# 配置信息
+CONFIG_INFO = 'cn'
+
+"""
+AWS相关
+"""
+# ======================================================================================================================
+# aws api key
+AWS_ARN_S3 = 'arn:aws-cn:s3'
+REGION_NAME = 'cn-northwest-1'
+ACCESS_KEY_ID = 'AKIA2MMWBR4DSFG67DTG'
+SECRET_ACCESS_KEY = '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'
+
+# 存储桶
+PUSH_BUCKET = 'push'                                # 推送存储桶
+
+# redis节点
+REDIS_ADDRESS = 'pushredis.3xavzq.0001.cnw1.cache.amazonaws.com.cn'
+
+APNS_MODE = 'prod'
 
-DEBUG_MODE = 'DEV'
-# MODE = 'PRO'
 # 阿里云发邮箱
 ALY_SES_ACCESS_NAME = 'message@dvema.com'
 ALY_SES_ACCESS_PAW = 'SMtp123456'
@@ -46,8 +54,6 @@ TX_PHONE_APP_KEY = '7705976ca6e85fe7b86d6bc2d11f7783'
 # 验证码超时时间
 AuthCode_Expire = 600
 
-# 根路径
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 # uid token key
 UID_TOKEN_KEY = 'c+565*j@%^'
 
@@ -56,8 +62,6 @@ OSS_STS_ACCESS_KEY = 'LTAIyMkGfEdogyL9'
 OSS_STS_ACCESS_SECRET = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
 OSS_ROLE_ARN = 'acs:ram::1901342792446414:role/stsoss'
 
-SERVER_TYPE = 'Ansjer.cn_config.cn_formal_settings'
-
 NGINX_RTMP_STAT = 'http://www.dvema.com/stat'
 SERVER_DOMAIN = 'http://www.dvema.com/'
 SERVER_DOMAIN_SSL = 'https://www.dvema.com/'
@@ -165,6 +169,3 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/commissionf.pem',
     }
 }
-APNS_MODE = 'prod'
-REDIS_ADDRESS = 'pushredis.3xavzq.0001.cnw1.cache.amazonaws.com.cn'
-# REDIS_ADDRESS = '192.168.136.45'

+ 6 - 1
AnsjerPush/config.py

@@ -5,11 +5,16 @@
 import os
 import datetime
 
+# 配置信息
+CONFIG_TEST = 'test'
+CONFIG_CN = 'cn'
+CONFIG_US = 'us'
+CONFIG_EUR = 'eur'
+
 # 配置模式和根路径
 SERVER_TYPE = os.environ.get('DJANGO_SETTINGS_MODULE')
 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
-DEBUG_MODE = 'DEV'
 # 阿里云发邮箱
 ALY_SES_ACCESS_NAME = 'message@dvema.com'
 ALY_SES_ACCESS_PAW = 'SMtp123456'

+ 23 - 8
AnsjerPush/eur_config/eur_formal_config.py

@@ -1,9 +1,30 @@
+"""
+独立于config.py的配置文件
+"""
 import os
 import datetime
 
+# 配置信息
+CONFIG_INFO = 'eur'
+
+"""
+AWS相关
+"""
+# ======================================================================================================================
+# aws api key
+AWS_ARN_S3 = 'arn:aws:s3'
+REGION_NAME = 'us-east-1'
+ACCESS_KEY_ID = 'AKIA2E67UIMD45Y3HL53'
+SECRET_ACCESS_KEY = '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'
+
+# 存储桶
+PUSH_BUCKET = 'foreignpush'                                # 推送存储桶
+
+# redis节点
+REDIS_ADDRESS = 'push-redis-001.av1kep.0001.euw1.cache.amazonaws.com'
+
+APNS_MODE = 'prod'
 
-DEBUG_MODE = 'DEV'
-# MODE = 'PRO'
 # 阿里云发邮箱
 ALY_SES_ACCESS_NAME = 'message@dvema.com'
 ALY_SES_ACCESS_PAW = 'SMtp123456'
@@ -33,8 +54,6 @@ TX_PHONE_APP_KEY = '7705976ca6e85fe7b86d6bc2d11f7783'
 # 验证码超时时间
 AuthCode_Expire = 600
 
-# 根路径
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 # uid token key
 UID_TOKEN_KEY = 'c+565*j@%^'
 
@@ -43,8 +62,6 @@ OSS_STS_ACCESS_KEY = 'LTAIyMkGfEdogyL9'
 OSS_STS_ACCESS_SECRET = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
 OSS_ROLE_ARN = 'acs:ram::1901342792446414:role/stsoss'
 
-SERVER_TYPE = 'Ansjer.eur_config.eur_formal_settings'
-
 NGINX_RTMP_STAT = 'http://www.dvema.com/stat'
 SERVER_DOMAIN = 'http://www.dvema.com/'
 SERVER_DOMAIN_SSL = 'https://www.dvema.com/'
@@ -152,5 +169,3 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/commissionf.pem',
     }
 }
-APNS_MODE = 'prod'
-REDIS_ADDRESS = 'push-redis-001.av1kep.0001.euw1.cache.amazonaws.com'

+ 22 - 32
AnsjerPush/test_config/test_config.py

@@ -1,25 +1,29 @@
-#!/usr/bin/env python3  
-# -*- coding: utf-8 -*-  
 """
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: Ansjer
-@software: PyCharm
-@DATE: 2018/7/2 14:06
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: Conf.py
-@Contact: chanjunkai@163.com
+独立于config.py的配置文件
 """
-# 主要静态变量配置文件
-import datetime, os
+import os
+import datetime
 
+# 配置信息
+CONFIG_INFO = 'test'
 
-# MODE = 'PRO'
-# 阿里云发邮箱
-ALY_SES_ACCESS_NAME = 'message@dvema.com'
-ALY_SES_ACCESS_PAW = 'SMtp123456'
-ALY_SES_ACCESS_REPLYTO = '***'
+"""
+AWS相关
+"""
+# ======================================================================================================================
+# aws api key
+AWS_ARN_S3 = 'arn:aws-cn:s3'
+REGION_NAME = 'cn-northwest-1'
+ACCESS_KEY_ID = 'AKIA2MMWBR4DSFG67DTG'
+SECRET_ACCESS_KEY = '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'
+
+# 存储桶
+PUSH_BUCKET = 'push'                                # 推送存储桶
+
+# redis节点
+REDIS_ADDRESS = '127.0.0.1'
+
+APNS_MODE = 'dev'
 
 # 发送邮件邮箱
 SES_COMPANY_EMAIL = 'user_server@nsst.com'
@@ -27,14 +31,11 @@ AWS_SES_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
 AWS_SES_ACCESS_SECRET = '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'
 AWS_SES_ACCESS_REGION = 'us-east-1'
 AWS_BUCKET = 'ansjertest'
-# 设定离线时间为5分钟
-OFF_LINE_TIME_DELTA = 5
 
 # token的secret
 OAUTH_ACCESS_TOKEN_SECRET = 'a+jbgnw%@1%zy^=@dn62%'
 OAUTH_REFRESH_TOKEN_SECRET = 'r+jbgnw%@1%zy^=@dn62%'
 # access_token超时
-# OAUTH_ACCESS_TOKEN_TIME = datetime.timedelta(hours=1)
 OAUTH_ACCESS_TOKEN_TIME = datetime.timedelta(days=30)
 # refresh_token超时
 OAUTH_REFRESH_TOKEN_TIME = datetime.timedelta(days=30)
@@ -45,8 +46,6 @@ TX_PHONE_APP_KEY = '7705976ca6e85fe7b86d6bc2d11f7783'
 # 验证码超时时间
 AuthCode_Expire = 600
 
-# 根路径
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 # uid token key
 UID_TOKEN_KEY = 'c+565*j@%^'
 
@@ -55,18 +54,11 @@ OSS_STS_ACCESS_KEY = 'LTAIyMkGfEdogyL9'
 OSS_STS_ACCESS_SECRET = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
 OSS_ROLE_ARN = 'acs:ram::1901342792446414:role/stsoss'
 
-SERVER_TYPE = 'Ansjer.test_config.test_settings'
-
 NGINX_RTMP_STAT = 'http://www.dvema.com/stat'
 SERVER_DOMAIN = 'http://www.dvema.com/'
 SERVER_DOMAIN_SSL = 'https://www.dvema.com/'
 DOMAIN_HOST = 'www.dvema.com'
 SERVER_HOST = 'localhost'
-PAYPAL_CRD = {
-    "mode": "live",  # sandbox or live
-    "client_id": "AdSRd6WBn-qLl9OiQHQuNYTDFSx0ZX0RUttqa58au8bPzoGYQUrt8bc6591RmH8_pEAIPijdvVYSVXyI",
-    "client_secret": "ENT-J08N3Fw0B0uAokg4RukljAwO9hFHPf8whE6-Dwd8oBWJO8AWMgpdTKpfB1pOy89t4bsFEzMWDowm"
-}
 DETECT_PUSH_DOMAIN = 'http://push.dvema.com/'
 
 
@@ -154,5 +146,3 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/commissionf-dev.pem',
     }
 }
-APNS_MODE = 'dev'
-REDIS_ADDRESS = '127.0.0.1'

+ 23 - 22
AnsjerPush/us_config/formal_config.py

@@ -1,22 +1,30 @@
-#!/usr/bin/env python3  
-# -*- coding: utf-8 -*-  
 """
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: Ansjer
-@software: PyCharm
-@DATE: 2018/7/2 14:06
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: Conf.py
-@Contact: chanjunkai@163.com
+独立于config.py的配置文件
 """
-# 主要静态变量配置文件
-import datetime, os
+import os
+import datetime
 
+# 配置信息
+CONFIG_INFO = 'us'
+
+"""
+AWS相关
+"""
+# ======================================================================================================================
+# aws api key
+AWS_ARN_S3 = 'arn:aws:s3'
+REGION_NAME = 'us-east-1'
+ACCESS_KEY_ID = 'AKIA2E67UIMD45Y3HL53'
+SECRET_ACCESS_KEY = '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'
+
+# 存储桶
+PUSH_BUCKET = 'foreignpush'                                # 推送存储桶
+
+# redis节点
+REDIS_ADDRESS = 'pushredis.5tgle2.0001.usw1.cache.amazonaws.com'
+
+APNS_MODE = 'prod'
 
-DEBUG_MODE = 'DEV'
-# MODE = 'PRO'
 # 阿里云发邮箱
 ALY_SES_ACCESS_NAME = 'message@dvema.com'
 ALY_SES_ACCESS_PAW = 'SMtp123456'
@@ -46,8 +54,6 @@ TX_PHONE_APP_KEY = '7705976ca6e85fe7b86d6bc2d11f7783'
 # 验证码超时时间
 AuthCode_Expire = 600
 
-# 根路径
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 # uid token key
 UID_TOKEN_KEY = 'c+565*j@%^'
 
@@ -56,8 +62,6 @@ OSS_STS_ACCESS_KEY = 'LTAIyMkGfEdogyL9'
 OSS_STS_ACCESS_SECRET = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
 OSS_ROLE_ARN = 'acs:ram::1901342792446414:role/stsoss'
 
-SERVER_TYPE = 'Ansjer.us_config.formal_settings'
-
 NGINX_RTMP_STAT = 'http://www.dvema.com/stat'
 SERVER_DOMAIN = 'http://www.dvema.com/'
 SERVER_DOMAIN_SSL = 'https://www.dvema.com/'
@@ -165,6 +169,3 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/commissionf.pem',
     }
 }
-APNS_MODE = 'prod'
-REDIS_ADDRESS = 'pushredis.5tgle2.0001.usw1.cache.amazonaws.com'
-# REDIS_ADDRESS = '192.168.136.45'

+ 25 - 49
Controller/AiController.py

@@ -13,9 +13,8 @@ from django.views.generic.base import View
 from pyfcm import FCMNotification
 
 from AnsjerPush.Config.aiConfig import LABEL_DICT, AI_IDENTIFICATION_TAGS_DICT
-from AnsjerPush.config import SERVER_TYPE
-from AnsjerPush.config import AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, APNS_MODE, APNS_CONFIG, BASE_DIR, \
-    JPUSH_CONFIG, FCM_CONFIG
+from AnsjerPush.config import APNS_MODE, APNS_CONFIG, BASE_DIR, \
+    JPUSH_CONFIG, FCM_CONFIG, ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME, PUSH_BUCKET
 from Model.models import UidPushModel, AiService
 from Object.ETkObject import ETkObject
 from Object.MergePic import ImageProcessing
@@ -138,9 +137,10 @@ class AiView(View):
             file_dict = {}
             for i, val in enumerate(file_path_list):
                 # 封面图
-                file_dict[val] = "{}/{}/{}_{}.jpeg".format(uid, channel, n_time, i)
-            thread_task = threading.Thread(target=self.upload_s3, args=(file_dict, dir_path))
-            thread_task.start()
+                file_dict[val] = '{}/{}/{}_{}.jpeg'.format(uid, channel, n_time, i)
+            upload_images_thread = threading.Thread(target=self.upload_images, args=(file_dict, dir_path))
+            upload_images_thread.start()
+
             # 存储消息以及推送
             is_st = 3  # 多图
             # 查询推送数据
@@ -330,52 +330,28 @@ class AiView(View):
         logger.info('------label_dict------ {}'.format(label_dict))
         return label_dict
 
-    def del_path(self, path):
-        if not os.path.exists(path):
-            return
-        if os.path.isfile(path):
-            os.remove(path)
-        else:
-            items = os.listdir(path)
-            for f in items:
-                c_path = os.path.join(path, f)
-                if os.path.isdir(c_path):
-                    self.del_path(c_path)
-                else:
-                    os.remove(c_path)
-            os.rmdir(path)
-
-    def upload_s3(self, file_dict, dir_path):
+    @staticmethod
+    def upload_images(file_dict, dir_path):
+        """
+        上传图片
+        @param file_dict: S3图片路径
+        @param dir_path: 本地图片路径
+        @return: boolean
+        """
         try:
-            if SERVER_TYPE == "Ansjer.formal_settings":
-                #存国外
-                aws_key = AWS_ACCESS_KEY_ID[1]
-                aws_secret = AWS_SECRET_ACCESS_KEY[1]
-                session = Session(aws_access_key_id=aws_key,
-                                  aws_secret_access_key=aws_secret,
-                                  region_name="us-east-1")
-                s3 = session.resource("s3")
-                bucket = "foreignpush"
-            else:
-                #存国内
-                aws_key = AWS_ACCESS_KEY_ID[0]
-                aws_secret = AWS_SECRET_ACCESS_KEY[0]
-                session = Session(aws_access_key_id=aws_key,
-                                  aws_secret_access_key=aws_secret,
-                                  region_name="cn-northwest-1")
-                s3 = session.resource("s3")
-                bucket = "push"
+            s3 = Session(
+                aws_access_key_id=ACCESS_KEY_ID,
+                aws_secret_access_key=SECRET_ACCESS_KEY,
+                region_name=REGION_NAME
+            ).resource('s3')
 
             for file_path, upload_path in file_dict.items():
-                print('-------')
-                print(file_path)
-                print('-------')
-                upload_data = open(file_path, "rb")
-                # upload_key = "test"
-                s3.Bucket(bucket).put_object(Key=upload_path, Body=upload_data)
-            # 需要删除图片
-            self.del_path(dir_path)
-            self.del_path(dir_path + '.jpg')
+                upload_data = open(file_path, 'rb')
+                s3.Bucket(PUSH_BUCKET).put_object(Key=upload_path, Body=upload_data)
+
+            # 删除图片
+            CommonService.del_path(dir_path)
+            CommonService.del_path(dir_path + '.jpg')
             return True
         except Exception as e:
             print(repr(e))

+ 23 - 1
Service/CommonService.py

@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 import datetime
+import os
 import time
 from pathlib import Path
 from random import Random
@@ -217,4 +218,25 @@ class CommonService:
         file.write("uid:" + uid + "; " + "; tz:" + tz)
         file.write('\n')
         file.flush()
-        file.close()
+        file.close()
+
+    @classmethod
+    def del_path(cls, path):
+        """
+        删除目录文件
+        @param path: 文件路径
+        @return: None
+        """
+        if not os.path.exists(path):
+            return
+        if os.path.isfile(path):
+            os.remove(path)
+        else:
+            items = os.listdir(path)
+            for f in items:
+                c_path = os.path.join(path, f)
+                if os.path.isdir(c_path):
+                    cls.del_path(c_path)
+                else:
+                    os.remove(c_path)
+            os.rmdir(path)