dream
39 строк · 1.2 Кб
1import logging
2import os
3import time
4from flask import Flask, request, jsonify
5import sentry_sdk
6from sentry_sdk.integrations.flask import FlaskIntegration
7from wiki_parser import wp_call
8from common.utils import remove_punctuation_from_dict_keys
9
10
11logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)
12logger = logging.getLogger(__name__)
13sentry_sdk.init(dsn=os.getenv("SENTRY_DSN"), integrations=[FlaskIntegration()])
14
15app = Flask(__name__)
16
17
18@app.route("/model", methods=["POST"])
19def respond():
20st_time = time.time()
21inp = request.json
22parser_info = inp.get("parser_info", ["find_triplets"])
23query = inp.get("query", [("Q0", "P0", "forw")])
24utt_num = inp.get("utt_num", 0)
25res = [[] for _ in query]
26logger.debug("Calling wp")
27try:
28res = wp_call(parser_info, query, utt_num)
29res = remove_punctuation_from_dict_keys(res)
30except Exception as e:
31sentry_sdk.capture_exception(e)
32logger.exception(e)
33total_time = time.time() - st_time
34logger.info(f"wiki parser exec time = {total_time:.3f}s")
35return jsonify(res)
36
37
38if __name__ == "__main__":
39app.run(debug=False, host="0.0.0.0", port=3000)
40