dream

Форк
0
85 строк · 2.2 Кб
1
#!/usr/bin/env python
2

3
import logging
4
import time
5
import os
6
import random
7

8
import sentry_sdk
9
from flask import Flask, request, jsonify
10
from sentry_sdk.integrations.logging import ignore_logger
11

12
from common.dff.integration.actor import load_ctxs, get_response
13
from scenario.main import actor
14

15
import test_server
16

17

18
ignore_logger("root")
19

20
sentry_sdk.init(os.getenv("SENTRY_DSN"))
21
SERVICE_NAME = os.getenv("SERVICE_NAME")
22
SERVICE_PORT = int(os.getenv("SERVICE_PORT"))
23
RANDOM_SEED = int(os.getenv("RANDOM_SEED", 2718))
24

25
logging.basicConfig(
26
    format="%(asctime)s - %(pathname)s - %(lineno)d - %(levelname)s - %(message)s",
27
    level=logging.DEBUG,
28
)
29
logger = logging.getLogger(__name__)
30

31

32
app = Flask(__name__)
33
logging.getLogger("werkzeug").setLevel("WARNING")
34

35

36
def handler(requested_data, random_seed=None):
37
    st_time = time.time()
38
    ctxs = load_ctxs(requested_data)
39
    random_seed = requested_data.get("random_seed", random_seed)  # for tests
40

41
    responses = []
42
    for ctx in ctxs:
43
        try:
44
            # for tests
45
            if random_seed:
46
                random.seed(int(random_seed))
47
            ctx = actor(ctx)
48
            responses.append(get_response(ctx, actor))
49
        except Exception as exc:
50
            sentry_sdk.capture_exception(exc)
51
            logger.exception(exc)
52
            responses.append(("", 0.0, {}, {}, {}))
53

54
    total_time = time.time() - st_time
55
    logger.info(f"{SERVICE_NAME} exec time = {total_time:.3f}s")
56
    return responses
57

58

59
try:
60
    test_server.run_test(handler)
61
    logger.info("test query processed")
62
except Exception as exc:
63
    sentry_sdk.capture_exception(exc)
64
    logger.exception(exc)
65
    raise exc
66

67

68
logger.info(f"{SERVICE_NAME} is loaded and ready")
69

70

71
@app.route("/respond", methods=["POST"])
72
def respond():
73
    # import common.test_utils as t_utils
74

75
    # t_utils.save_to_test(request.json, "tests/lets_talk_in.json", indent=4)  # TEST
76
    # responses = handler(request.json, RANDOM_SEED)  # TEST
77
    # import common.test_utils as t_utils
78

79
    # t_utils.save_to_test(responses, "tests/lets_talk_out.json", indent=4)  # TEST
80
    responses = handler(request.json)
81
    return jsonify(responses)
82

83

84
if __name__ == "__main__":
85
    app.run(debug=False, host="0.0.0.0", port=SERVICE_PORT)
86

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.