dream
38 строк · 1.3 Кб
1#!/usr/bin/env python
2import time
3import asyncio
4import logging
5import requests
6import sentry_sdk
7
8from typing import Callable, Dict
9from os import getenv
10
11
12logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)
13logger = logging.getLogger(__name__)
14
15sentry_sdk.init(getenv("SENTRY_DSN"))
16headers = {"Content-Type": "application/json;charset=utf-8"}
17
18
19class BatchConnector:
20def __init__(self, url: str):
21self._url = url
22
23async def send(self, payload: Dict, callback: Callable):
24try:
25st_time = time.time()
26toxic_result = requests.request(
27url=self._url, headers=headers, json=payload["payload"], method="POST", timeout=1.0
28).json()
29result = [res[0] for res in toxic_result]
30total_time = time.time() - st_time
31logger.info(f"DeepPavlovToxicClassification batch connector exec time: {total_time:.3f}s")
32# In connector [result] leads to bug, so it is not inside array like on
33# conv eval and badlist annotator
34asyncio.create_task(callback(task_id=payload["task_id"], response={"batch": result}))
35except Exception as e:
36logger.exception(e)
37sentry_sdk.capture_exception(e)
38asyncio.create_task(callback(task_id=payload["task_id"], response=e))
39