app.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import json
  2. import time
  3. import traceback
  4. from gevent import monkey
  5. monkey.patch_all()
  6. from flask import Flask, request
  7. from log import Log
  8. from config import set_config
  9. from words_func import get_words, update_wechat_score_data, get_today_words
  10. from update_common_words import add_words2mysql
  11. app = Flask(__name__)
  12. log_ = Log()
  13. config_, env = set_config()
  14. @app.route('/healthcheck')
  15. def health_check():
  16. return 'ok!'
  17. # 获取热点词库中的所有词
  18. @app.route('/hot/word/getAllWords', methods=['GET', 'POST'])
  19. def get_all_words():
  20. try:
  21. start_time = time.time()
  22. request_data = json.loads(request.get_data())
  23. page_num = request_data.get('pageNum', 1)
  24. page_size = request_data.get('pageSize', 100)
  25. words = get_words(page_num=page_num, page_size=page_size)
  26. result = {'code': 200, 'message': 'success', 'data': {'words': words}}
  27. log_message = {
  28. 'requestUri': '/hot/word/getAllWords',
  29. 'logTimestamp': int(time.time() * 1000),
  30. 'result': result,
  31. 'executeTime': (time.time() - start_time) * 1000
  32. }
  33. log_.info(log_message)
  34. return json.dumps(result)
  35. except Exception as e:
  36. log_.error(traceback.format_exc())
  37. result = {'code': -1, 'message': 'fail'}
  38. return json.dumps(result)
  39. # 更新热点词的微信指数
  40. @app.route('/hot/word/updateWechatScore', methods=['GET', 'POST'])
  41. def update_wechat_score():
  42. try:
  43. start_time = time.time()
  44. request_data = json.loads(request.get_data())
  45. data = request_data.get('data', None)
  46. update_wechat_score_data(data=data)
  47. result = {'code': 200, 'message': 'success'}
  48. log_.info(f"executeTime = {(time.time() - start_time) * 1000}")
  49. return json.dumps(result)
  50. except Exception as e:
  51. log_.error(traceback.format_exc())
  52. result = {'code': -1, 'message': 'fail'}
  53. return json.dumps(result)
  54. # 更新飞书指定表格中的数据到热点词库
  55. @app.route('/hot/word/updateWords', methods=['GET', 'POST'])
  56. def update_words():
  57. try:
  58. start_time = time.time()
  59. request_data = json.loads(request.get_data())
  60. sheet_name = request_data.get('sheet_name')
  61. source = request_data.get('source')
  62. if sheet_name is not None and source is not None:
  63. add_words2mysql(sheet_name=sheet_name, source=source)
  64. result = {'code': 200, 'message': 'success'}
  65. else:
  66. log_.error(f"sheet_name = {sheet_name}, source = {source}")
  67. result = {'code': -1, 'message': 'fail'}
  68. log_message = {
  69. 'requestUri': '/hot/word/updateWords',
  70. 'logTimestamp': int(time.time() * 1000),
  71. 'result': result,
  72. 'executeTime': (time.time() - start_time) * 1000
  73. }
  74. log_.info(log_message)
  75. return json.dumps(result)
  76. except Exception as e:
  77. log_.error(traceback.format_exc())
  78. result = {'code': -1, 'message': 'fail'}
  79. return json.dumps(result)
  80. # 获取热点词库中当天更新的所有热词
  81. @app.route('/hot/word/getTodayWords', methods=['GET', 'POST'])
  82. def get_today_all_words():
  83. try:
  84. start_time = time.time()
  85. request_data = json.loads(request.get_data())
  86. page_num = request_data.get('pageNum', 1)
  87. page_size = request_data.get('pageSize', 100)
  88. words = get_today_words(page_num=page_num, page_size=page_size)
  89. result = {'code': 200, 'message': 'success', 'data': {'words': words}}
  90. log_message = {
  91. 'requestUri': '/hot/word/getTodayWords',
  92. 'logTimestamp': int(time.time() * 1000),
  93. 'result': result,
  94. 'executeTime': (time.time() - start_time) * 1000
  95. }
  96. log_.info(log_message)
  97. return json.dumps(result)
  98. except Exception as e:
  99. log_.error(traceback.format_exc())
  100. result = {'code': -1, 'message': 'fail'}
  101. return json.dumps(result)
  102. if __name__ == '__main__':
  103. app.run()