label_web_server.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Jun 1 18:03:03 2018
  4. @author: DONG
  5. """
  6. import sys
  7. import os
  8. sys.path.append(os.path.abspath("../.."))
  9. print(sys.path)
  10. from flask import Flask, jsonify
  11. from flask import abort
  12. from flask import request
  13. import logging
  14. import time
  15. import BiddingKG.dl.interface.predictor as predictor
  16. import BiddingKG.dl.interface.Preprocessing as Preprocessing
  17. from Entity2DB import *
  18. import psycopg2
  19. os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
  20. os.environ["CUDA_VISIBLE_DEVICES"] = ""
  21. from DBUtils.PooledDB import PooledDB
  22. pool = None
  23. def getConnection():
  24. global pool
  25. if pool is None:
  26. pool = PooledDB(psycopg2, 10,dbname="article_label", host="192.168.2.101",user="postgres",password="postgres",port="5432")
  27. return pool.connection()
  28. app = Flask(__name__)
  29. app.config['JSON_AS_ASCII'] = False
  30. gunicorn_logger = logging.getLogger('gunicorn.error')
  31. app.logger.handlers = gunicorn_logger.handlers
  32. app.logger.setLevel(gunicorn_logger.level)
  33. codeNamePredict = predictor.CodeNamePredict()
  34. premPredict = predictor.PREMPredict()
  35. epcPredict = predictor.EPCPredict()
  36. @app.route('/article_extract', methods=['POST'])
  37. def text_predict():
  38. start_time = time.time()
  39. # 初始化待返回结果
  40. data = {}
  41. # 确保请求符合要求
  42. if request.method == "POST":
  43. if (not request.json) or ('content' not in request.json):
  44. abort(400)
  45. else:
  46. conn = psycopg2.connect(dbname="article_label",user="postgres",password="postgres",host="192.168.2.101")
  47. id = request.json['id']
  48. content = request.json['content']
  49. cursor = conn.cursor()
  50. sql = " select count(1) from articles_processed where id='"+id+"' "
  51. cursor.execute(sql)
  52. rows = cursor.fetchall()
  53. conn.close()
  54. '''
  55. if rows[0][0]>0:
  56. data["success"] = True
  57. return jsonify(data), 201
  58. '''
  59. try:
  60. conn = psycopg2.connect(dbname="article_label",user="postgres",password="postgres",host="192.168.2.101")
  61. list_articles,list_sentences,list_entitys = Preprocessing.get_preprocessed([[id,content]])
  62. role_datas = Preprocessing.search_role_data(list_sentences,list_entitys)
  63. money_datas = Preprocessing.search_money_data(list_sentences,list_entitys)
  64. person_datas = Preprocessing.search_person_data(list_sentences,list_entitys)
  65. premPredict.predict(role_datas,money_datas)
  66. epcPredict.predict(person_datas)
  67. codeName = codeNamePredict.predict(list_articles)
  68. '''
  69. persistArticle(conn, list_articles,codeName)
  70. for sentences in list_sentences:
  71. persistSentence(conn, sentences)
  72. for entitys in list_entitys:
  73. persistEntity(conn, entitys)
  74. '''
  75. except Exception as e:
  76. app.logger.info("error:"+str(e))
  77. finally:
  78. conn.commit()
  79. conn.close()
  80. data["success"] = True
  81. # 以json形式返回结果
  82. app.logger.info(" time from receive to send: "+str(time.time()-start_time))
  83. return jsonify(data), 201
  84. if __name__ == '__main__':
  85. handler = logging.FileHandler('flask.log', encoding='UTF-8')
  86. app.logger.addHandler(handler)
  87. app.run(host='0.0.0.0', port=15010, threaded=True, debug=True)