فهرست منبع

Merge remote-tracking branch 'origin/master'

liyuyi@c-top.com.cn 4 سال پیش
والد
کامیت
fec670f354

+ 214 - 0
.gitignore

@@ -0,0 +1,214 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Python template
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+.pybuilder/
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+#   For a library or package, you might want to ignore these files since the code is
+#   intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+#   However, in case of collaboration, if having platform-specific dependencies or dependencies
+#   having no cross-platform support, pipenv may install dependencies that don't work, or not
+#   install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
+
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn.  Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+

+ 1 - 1
.idea/ai_ads.iml

@@ -5,7 +5,7 @@
       <excludeFolder url="file://$MODULE_DIR$/.pytest_cache" />
       <excludeFolder url="file://$MODULE_DIR$/venv" />
     </content>
-    <orderEntry type="jdk" jdkName="Python 3.7 (ai_ads)" jdkType="Python SDK" />
+    <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
   <component name="PyDocumentationSettings">

+ 1 - 0
.idea/encodings.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/ai_callback_add_group_handler.py" charset="GBK" />
     <file url="file://$PROJECT_DIR$/logs/add_group_log/ai_strategy_request.log.2021-01-14" charset="GBK" />
   </component>
 </project>

+ 1 - 1
.idea/misc.xml

@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (ai_ads)" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (base)" project-jdk-type="Python SDK" />
 </project>

+ 7 - 0
.idea/other.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PySciProjectComponent">
+    <option name="PY_SCI_VIEW" value="true" />
+    <option name="PY_SCI_VIEW_SUGGESTED" value="true" />
+  </component>
+</project>

+ 6 - 0
.idea/sqldialects.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="SqlDialectMappings">
+    <file url="file://$PROJECT_DIR$/mysql_search_utils.py" dialect="GenericSQL" />
+  </component>
+</project>

+ 39 - 0
HttpUtils.py

@@ -0,0 +1,39 @@
+import requests
+import logging
+
+
+class httpUtils:
+    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
+    logger = logging.getLogger(__name__)
+
+    def get(self, url, params={}, headers={}):
+        res = requests.get(url, data=params, headers=headers)
+        self.logger.info("请求路径:" + res.request.url)
+        headerStr = ""
+        for headerKey in res.request.headers:
+            headerStr = headerStr + "\n" + headerKey + ":" + res.request.headers[headerKey]
+        self.logger.info("请求头信息:" + headerStr)
+        self.logger.info("请求参数:\n" + res.request.body)
+
+        resHeaderStr = ""
+        for resHeaderKey in res.headers:
+            resHeaderStr = resHeaderStr + "\n" + resHeaderKey + ":" + res.headers[resHeaderKey]
+        self.logger.info("响应头信息:" + resHeaderStr)
+        self.logger.info("返回结果:\n" + res.content.decode("utf-8"))
+        return res.content.decode("utf-8")
+
+    def post(self, url, params={}, headers={}):
+        res = requests.post(url, data=params, headers=headers)
+        self.logger.info("请求路径:" + res.request.url)
+        headerStr = ""
+        for headerKey in res.request.headers:
+            headerStr = headerStr + "\n" + headerKey + ":" + res.request.headers[headerKey]
+        self.logger.info("请求头信息:" + headerStr)
+        self.logger.info("请求参数:\n" + res.request.body)
+
+        resHeaderStr = ""
+        for resHeaderKey in res.headers:
+            resHeaderStr = resHeaderStr + "\n" + resHeaderKey + ":" + res.headers[resHeaderKey]
+        self.logger.info("响应头信息:" + resHeaderStr)
+        self.logger.info("返回结果:\n" + res.content.decode("utf-8"))
+        return res

+ 0 - 1
ai_ads.gitignore

@@ -1 +0,0 @@
-*.log

+ 4 - 14
ai_callback_add_creative_handler.py

@@ -1,20 +1,10 @@
-from typing import Optional, Awaitable
-import pandas as pd
-import numpy as np
-import datetime
-import pymysql
-from sqlalchemy import create_engine
-import simplejson
-import requests
-import tornado.web
-import pandas as pd
 import json
-import numpy as np
-import datetime
-from sqlalchemy import create_engine
-from db_config import *
 import traceback
 
+import tornado.web
+
+from db_config import *
+
 
 class AiCallBackAddCreative(tornado.web.RequestHandler):
     def initialize(self, logger):

+ 5 - 15
ai_callback_add_group_handler.py

@@ -1,20 +1,10 @@
-from typing import Optional, Awaitable
-import pandas as pd
-import numpy as np
-import datetime
-import pymysql
-from sqlalchemy import create_engine
-import simplejson
-import requests
-import tornado.web
-import pandas as pd
 import json
-import numpy as np
-import datetime
-from sqlalchemy import create_engine
-from db_config import *
 import traceback
 
+import tornado.web
+
+from db_config import *
+
 
 class AiCallBackAddGroup(tornado.web.RequestHandler):
     def initialize(self, logger):
@@ -38,7 +28,7 @@ class AiCallBackAddGroup(tornado.web.RequestHandler):
             res['message'] = 'FAIL'
             self.logger.error(traceback.format_exc())
 
-        # 返回接�结果
+        # ·µ»Ø½Ó¿Ú½á¹û
         self.write(json.dumps(res))
         self.flush()
 

+ 0 - 1
db_config.py

@@ -1,4 +1,3 @@
-import pymysql
 from sqlalchemy import create_engine
 
 # 线上数据库连接字符串

+ 0 - 0
logs/ai_strategy_request/ai_strategy_request.log


+ 2 - 12
manual_request_json.py

@@ -1,18 +1,8 @@
-from typing import Optional, Awaitable
-import pandas as pd
-import numpy as np
 import datetime
+import json
 
-import simplejson
 import requests
-import tornado.web
-import pandas as pd
-import json
-import numpy as np
-from sqlalchemy import create_engine
-from db_config import *
-import traceback
-from urllib import parse
+import simplejson
 
 
 def main():

+ 12 - 5
server.py

@@ -1,8 +1,13 @@
 from flask import Flask,request
-import mysql_search_utils
+from mysql_search_utils import mysqlSearchUtils
+from HttpUtils import httpUtils
+import json
 
 app = Flask(__name__)
 
+mysql = mysqlSearchUtils()
+httpUtils = httpUtils()
+
 @app.route('/hello')
 def helloWord():
     print(request.path)
@@ -12,20 +17,22 @@ def helloWord():
 
 @app.route('/getOne')
 def getJson():
-    mysql = mysql_search_utils.mysqlSearchUtils()
     responseDict = {}
-    data = mysql_search_utils.mysqlSearchUtils.get_one(mysql)
+    data = mysql.get_one()
     responseDict["data"] = data
     return responseDict
 
 @app.route('/getList')
 def getList():
-    mysql = mysql_search_utils.mysqlSearchUtils();
     responseDict = {}
-    list = mysql_search_utils.mysqlSearchUtils.get_all(mysql)
+    list = mysql.get_all()
     responseDict["list"] = list
     return responseDict
 
+@app.route('/testReport')
+def testReport():
+    rest = httpUtils.get("http://localhost:8079/getOne",{"accountId":"123"},{"accountId":"123"})
+    return json.loads(rest)
 
 if __name__ == '__main__':
     app.run(host='0.0.0.0',port=8079,debug=True)