Compare commits

..

42 Commits

Author SHA1 Message Date
77fe38acc0 Merge pull request 'fix' (#50) from master into dev
Reviewed-on: #50
2025-06-15 00:17:58 +03:00
Egor Matveev
d91ae82f6e fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 5s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / Deploy dev (pull_request) Successful in 18s
2025-06-15 00:17:35 +03:00
64db408144 Merge pull request 'fix' (#49) from master into dev
Reviewed-on: #49
2025-06-15 00:09:59 +03:00
Egor Matveev
46031265e0 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 1m5s
Deploy Dev / Push (pull_request) Successful in 13s
Deploy Dev / Deploy dev (pull_request) Successful in 15s
2025-06-15 00:09:33 +03:00
bd1e26cb50 Merge pull request 'fix' (#48) from master into dev
Reviewed-on: #48
2024-12-31 02:53:25 +03:00
5102564b84 Merge pull request 'master' (#47) from master into dev
Reviewed-on: #47
2024-12-31 02:50:30 +03:00
733ab721d6 Merge pull request 'fix' (#42) from master into dev
Reviewed-on: #42
2024-12-22 23:50:21 +03:00
57c012cb44 Merge pull request 'master' (#41) from master into dev
Reviewed-on: #41
2024-12-22 23:48:35 +03:00
96eef035c5 Merge pull request 'master' (#39) from master into dev
Reviewed-on: #39
2024-12-21 19:27:36 +03:00
cbbd1462cd Merge pull request 'fix' (#37) from master into dev
Reviewed-on: #37
2024-12-08 19:42:42 +03:00
5c6142202b Merge pull request 'fix' (#36) from master into dev
Reviewed-on: #36
2024-12-08 19:40:35 +03:00
723a230ced Merge pull request 'fix' (#35) from master into dev
Reviewed-on: #35
2024-12-08 13:45:28 +03:00
c32bfad431 Merge pull request 'fix' (#34) from master into dev
Reviewed-on: #34
2024-12-08 13:43:33 +03:00
0f58ed101e Merge pull request 'fix' (#33) from master into dev
Reviewed-on: #33
2024-12-08 12:06:25 +03:00
aebaa7e546 Merge pull request 'fix' (#32) from master into dev
Reviewed-on: #32
2024-12-08 11:48:59 +03:00
80462d2a61 Merge pull request 'fix' (#31) from master into dev
Reviewed-on: #31
2024-12-08 11:36:31 +03:00
f0399196b5 Merge pull request 'fix' (#30) from master into dev
Reviewed-on: #30
2024-12-08 11:34:33 +03:00
7b806075c7 Merge pull request 'fix' (#29) from master into dev
Reviewed-on: #29
2024-12-08 11:26:22 +03:00
2eb13d9443 Merge pull request 'master' (#28) from master into dev
Reviewed-on: #28
2024-12-08 11:22:27 +03:00
49634845a1 Merge pull request 'Update daemons/mailbox.py' (#27) from master into dev
Reviewed-on: #27
2024-12-02 22:39:10 +03:00
e02646a1a2 Merge pull request 'fix' (#26) from master into dev
Reviewed-on: #26
2024-12-02 21:57:09 +03:00
1b7e8686e4 Merge pull request 'fix' (#24) from master into dev
Reviewed-on: #24
2024-11-30 13:30:19 +03:00
cf12a0dca8 Merge pull request 'types' (#23) from master into dev
Reviewed-on: #23
2024-11-30 12:59:01 +03:00
0a97e56539 Merge pull request 'fix' (#21) from master into dev
Reviewed-on: #21
2024-11-29 20:31:45 +03:00
a5d3bd08c1 Merge pull request 'fix' (#20) from master into dev
Reviewed-on: #20
2024-11-29 20:25:38 +03:00
ad74b8de7a Merge pull request 'fix' (#18) from master into dev
Reviewed-on: #18
2024-11-28 23:09:59 +03:00
05d9cdc7b1 Merge pull request 'fix' (#17) from master into dev
Reviewed-on: #17
2024-11-28 22:58:47 +03:00
a209246513 Merge pull request 'fix' (#15) from master into dev
Reviewed-on: #15
2024-11-27 16:18:17 +03:00
0922b5a4a4 Merge pull request 'fix' (#14) from master into dev
Reviewed-on: #14
2024-11-27 16:14:35 +03:00
2ee74e70ac Merge pull request 'fix' (#13) from master into dev
Reviewed-on: #13
2024-11-27 14:46:14 +03:00
da93092232 Merge pull request 'fix' (#12) from master into dev
Reviewed-on: #12
2024-11-27 11:20:53 +03:00
60b933496f Merge pull request 'fix' (#11) from master into dev
Reviewed-on: #11
2024-11-27 11:15:30 +03:00
82b99ae803 Merge pull request 'fix' (#10) from master into dev
Reviewed-on: #10
2024-11-27 11:12:37 +03:00
c8f65a0ebb Merge pull request 'fix' (#9) from master into dev
Reviewed-on: #9
2024-11-27 11:10:47 +03:00
6401a40f11 Merge pull request 'fix' (#8) from master into dev
Reviewed-on: #8
2024-11-27 04:32:35 +03:00
32197fd699 Merge pull request 'fix' (#7) from master into dev
Reviewed-on: #7
2024-11-27 04:26:41 +03:00
e69ee8767a Merge pull request 'fix' (#6) from master into dev
Reviewed-on: #6
2024-11-27 04:19:26 +03:00
54f7581657 Merge pull request 'fix' (#5) from master into dev
Reviewed-on: #5
2024-11-27 04:14:58 +03:00
c6a2710087 Merge pull request 'fix' (#4) from master into dev
Reviewed-on: #4
2024-11-27 04:11:15 +03:00
42fc5552ab Merge pull request 'fix' (#3) from master into dev
Reviewed-on: #3
2024-11-27 04:09:16 +03:00
499eed49e0 Merge pull request 'fix' (#2) from master into dev
Reviewed-on: #2
2024-11-27 04:07:49 +03:00
349df7eb17 Merge pull request 'req' (#1) from master into dev
Reviewed-on: #1
2024-11-27 04:06:16 +03:00
2 changed files with 27 additions and 34 deletions

View File

@@ -22,6 +22,7 @@ services:
networks:
- configurator
- queues-development
- monitoring
environment:
STAGE: "development"
command: mailbox
@@ -38,3 +39,5 @@ networks:
external: true
queues-development:
external: true
monitoring:
external: true

View File

@@ -1,9 +1,5 @@
from concurrent.futures import ThreadPoolExecutor
import datetime
import json
import os
import uuid
import zoneinfo
import requests
import time
@@ -20,24 +16,6 @@ class QueuesException(Exception):
class TasksHandlerMixin:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.executor = ThreadPoolExecutor(max_workers=1)
def _send_metric(self, start: datetime.datetime, end: datetime.datetime, success: bool):
def send():
requests.post(f'{QUEUES_URL}/api/v1/metric', json={
'service': 'botalka',
'queue': self.queue_name,
'success': success,
'timestamp': start.strftime("%Y-%m-%dT%H:%M:%S") + "Z",
"success": success,
"execution_time_ms": (end - start).microseconds // 1000,
"environment": stage,
})
self.executor.submit(send)
def poll(self):
while True:
try:
@@ -50,24 +28,36 @@ class TasksHandlerMixin:
if not task:
time.sleep(0.2)
continue
start = datetime.datetime.now(zoneinfo.ZoneInfo("Europe/Moscow"))
start = datetime.datetime.now()
try:
print(f'process task with id {task["id"]}, attempt {task["attempt"]}')
self.process(task['payload'])
success = True
except Exception as exc:
print(f'Error processing message id={task["id"]}, payload={task["payload"]}, exc={exc}')
success = False
end = datetime.datetime.now(zoneinfo.ZoneInfo("Europe/Moscow"))
if success:
try:
resp = requests.post(f'{QUEUES_URL}/api/v1/finish', json={'id': task['id']})
if resp.status_code != 202:
raise QueuesException
print(f'finish task with id {task["id"]}')
except:
print(f'Failed to finish task id={task["id"]}')
self._send_metric(start, end, success)
end = datetime.datetime.now()
try:
resp = requests.post(f'{QUEUES_URL}/api/v1/finish', json={'id': task['id']})
if resp.status_code != 202:
raise QueuesException
except:
print(f'Failed to finish task id={task["id"]}')
try:
metric = requests.post('http://monitoring:1237/api/v1/metrics/task', json={
'timestamp': start.strftime("%Y-%m-%dT%H:%M:%S") + "Z",
'service': 'botalka',
'environment': stage,
'queue': self.queue_name,
'success': success,
'execution_time_ms': (end - start).microseconds // 1000,
})
if metric.status_code == 202:
print('metric ok')
else:
print(f'metric failed: {metric.status_code}')
except Exception as e:
print(f'metric failed: {e}')
@property
def queue_name(self):