chore: stylize sse code; fix: add sseclient-py to requirements
This commit is contained in:
@@ -2,8 +2,8 @@ from uuid import UUID
|
||||
from _io import BufferedReader
|
||||
from typing import cast, Iterator
|
||||
from datetime import datetime
|
||||
import json
|
||||
import time
|
||||
from json import JSONDecodeError, loads
|
||||
from time import sleep
|
||||
|
||||
from requests.exceptions import ConnectionError, HTTPError
|
||||
from sseclient import SSEClient
|
||||
@@ -1144,14 +1144,14 @@ class Client:
|
||||
if not event.data or event.data.strip() == '':
|
||||
continue
|
||||
|
||||
data = json.loads(event.data)
|
||||
data = loads(event.data)
|
||||
|
||||
if 'userId' in data and 'timestamp' in data and 'type' not in data:
|
||||
yield StreamConnect.model_validate(data)
|
||||
else:
|
||||
yield StreamNotification.model_validate(data)
|
||||
|
||||
except json.JSONDecodeError:
|
||||
except JSONDecodeError:
|
||||
print(f'Не удалось распарсить сообщение: {event.data}')
|
||||
continue
|
||||
except Exception as e:
|
||||
@@ -1169,7 +1169,7 @@ class Client:
|
||||
if not self._stream_active:
|
||||
return
|
||||
print(f'Ошибка соединения: {e}, переподключение через 5 секунд...')
|
||||
time.sleep(5)
|
||||
sleep(5)
|
||||
continue
|
||||
|
||||
def stop_stream(self):
|
||||
@@ -1197,4 +1197,5 @@ class Client:
|
||||
thread.join()
|
||||
```
|
||||
"""
|
||||
print('stop event')
|
||||
self._stream_active = False
|
||||
@@ -1,11 +1,8 @@
|
||||
from uuid import UUID
|
||||
from datetime import datetime
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from itd.enums import NotificationType, NotificationTargetType
|
||||
from itd.models.user import UserNotification
|
||||
from itd.models.notification import Notification
|
||||
|
||||
|
||||
class StreamConnect(BaseModel):
|
||||
@@ -14,20 +11,7 @@ class StreamConnect(BaseModel):
|
||||
timestamp: int
|
||||
|
||||
|
||||
class StreamNotification(BaseModel):
|
||||
class StreamNotification(Notification):
|
||||
"""Уведомление из SSE потока"""
|
||||
id: UUID
|
||||
type: NotificationType
|
||||
|
||||
target_type: NotificationTargetType | None = Field(None, alias='targetType')
|
||||
target_id: UUID | None = Field(None, alias='targetId')
|
||||
|
||||
preview: str | None = None
|
||||
read_at: datetime | None = Field(None, alias='readAt')
|
||||
created_at: datetime = Field(alias='createdAt')
|
||||
|
||||
user_id: UUID = Field(alias='userId')
|
||||
actor: UserNotification
|
||||
|
||||
read: bool = False
|
||||
sound: bool = True
|
||||
|
||||
@@ -12,6 +12,6 @@ authors = [
|
||||
]
|
||||
license = "MIT"
|
||||
dependencies = [
|
||||
"requests", "pydantic"
|
||||
"requests", "pydantic", "sseclient-py"
|
||||
]
|
||||
requires-python = ">=3.9"
|
||||
|
||||
Reference in New Issue
Block a user