fix: optional ssl for kafka and optional tg user fields
This commit is contained in:
@@ -27,6 +27,7 @@ CHATS_SYNC_URL = os.environ.get('CHATS_SYNC_URL')
|
|||||||
KAFKA_URL = os.environ.get('KAFKA_URL')
|
KAFKA_URL = os.environ.get('KAFKA_URL')
|
||||||
KAFKA_CONSUMER_TOPIC = os.environ.get('KAFKA_CONSUMER_TOPIC')
|
KAFKA_CONSUMER_TOPIC = os.environ.get('KAFKA_CONSUMER_TOPIC')
|
||||||
KAFKA_PRODUCER_TOPIC = os.environ.get('KAFKA_PRODUCER_TOPIC')
|
KAFKA_PRODUCER_TOPIC = os.environ.get('KAFKA_PRODUCER_TOPIC')
|
||||||
|
KAFKA_ENABLE_SSL = os.environ.get('KAFKA_ENABLE_SSL', 'true').lower() in ('true', '1', 't')
|
||||||
|
|
||||||
# Celery
|
# Celery
|
||||||
CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL')
|
CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL')
|
||||||
|
|||||||
7
external/kafka/consumer.py
vendored
7
external/kafka/consumer.py
vendored
@@ -1,20 +1,19 @@
|
|||||||
from aiokafka import AIOKafkaConsumer
|
from aiokafka import AIOKafkaConsumer
|
||||||
from aiokafka.errors import KafkaConnectionError
|
from aiokafka.errors import KafkaConnectionError
|
||||||
|
|
||||||
from backend.config import KAFKA_URL, KAFKA_CONSUMER_TOPIC
|
from backend.config import KAFKA_URL, KAFKA_CONSUMER_TOPIC, KAFKA_ENABLE_SSL
|
||||||
from backend.session import session_maker
|
from backend.session import session_maker
|
||||||
from external.kafka.context import context
|
from external.kafka.context import context
|
||||||
from external.kafka.services.consumer_service import ConsumerService
|
from external.kafka.services.consumer_service import ConsumerService
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def consume_messages():
|
async def consume_messages():
|
||||||
consumer = AIOKafkaConsumer(
|
consumer = AIOKafkaConsumer(
|
||||||
KAFKA_CONSUMER_TOPIC,
|
KAFKA_CONSUMER_TOPIC,
|
||||||
bootstrap_servers=KAFKA_URL,
|
bootstrap_servers=KAFKA_URL,
|
||||||
group_id='crm',
|
group_id='crm',
|
||||||
security_protocol='SSL',
|
security_protocol='SSL' if KAFKA_ENABLE_SSL else 'PLAINTEXT',
|
||||||
ssl_context=context,
|
ssl_context=context if KAFKA_ENABLE_SSL else None,
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
await consumer.start()
|
await consumer.start()
|
||||||
|
|||||||
6
external/kafka/producer.py
vendored
6
external/kafka/producer.py
vendored
@@ -2,7 +2,7 @@ from typing import Optional
|
|||||||
|
|
||||||
from aiokafka import AIOKafkaProducer
|
from aiokafka import AIOKafkaProducer
|
||||||
|
|
||||||
from backend.config import KAFKA_URL
|
from backend.config import KAFKA_URL, KAFKA_ENABLE_SSL
|
||||||
from external.kafka.context import context
|
from external.kafka.context import context
|
||||||
|
|
||||||
_producer: Optional[AIOKafkaProducer] = None
|
_producer: Optional[AIOKafkaProducer] = None
|
||||||
@@ -12,8 +12,8 @@ async def init_producer():
|
|||||||
global _producer
|
global _producer
|
||||||
_producer = AIOKafkaProducer(
|
_producer = AIOKafkaProducer(
|
||||||
bootstrap_servers=KAFKA_URL,
|
bootstrap_servers=KAFKA_URL,
|
||||||
security_protocol='SSL',
|
security_protocol='SSL' if KAFKA_ENABLE_SSL else 'PLAINTEXT',
|
||||||
ssl_context=context,
|
ssl_context=context if KAFKA_ENABLE_SSL else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
6
external/kafka/schemas/consumer.py
vendored
6
external/kafka/schemas/consumer.py
vendored
@@ -7,9 +7,9 @@ from schemas.base import OkMessageSchema, BaseSchema
|
|||||||
|
|
||||||
class TelegramUserSchema(BaseSchema):
|
class TelegramUserSchema(BaseSchema):
|
||||||
id: int
|
id: int
|
||||||
first_name: str
|
first_name: Optional[str] = None
|
||||||
last_name: str
|
last_name: Optional[str] = None
|
||||||
username: str
|
username: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
class MessageFileSchema(BaseSchema):
|
class MessageFileSchema(BaseSchema):
|
||||||
|
|||||||
@@ -20,13 +20,9 @@ class TgUser(BaseModel):
|
|||||||
primary_key=True,
|
primary_key=True,
|
||||||
comment='Telegram user ID',
|
comment='Telegram user ID',
|
||||||
)
|
)
|
||||||
username: Mapped[str] = mapped_column(
|
username: Mapped[Optional[str]] = mapped_column(nullable=True)
|
||||||
index=True,
|
first_name: Mapped[Optional[str]] = mapped_column(nullable=True)
|
||||||
nullable=False,
|
last_name: Mapped[Optional[str]] = mapped_column(nullable=True)
|
||||||
unique=True,
|
|
||||||
)
|
|
||||||
first_name: Mapped[str] = mapped_column(nullable=True)
|
|
||||||
last_name: Mapped[str] = mapped_column(nullable=True)
|
|
||||||
|
|
||||||
messages: Mapped['Message'] = relationship(
|
messages: Mapped['Message'] = relationship(
|
||||||
'Message',
|
'Message',
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ from schemas.user import UserSchema
|
|||||||
|
|
||||||
class TgUserSchema(BaseSchema):
|
class TgUserSchema(BaseSchema):
|
||||||
id: int
|
id: int
|
||||||
first_name: str
|
first_name: Optional[str]
|
||||||
last_name: str
|
last_name: Optional[str]
|
||||||
username: str
|
username: Optional[str]
|
||||||
|
|
||||||
|
|
||||||
class MessageFileSchema(BaseSchema):
|
class MessageFileSchema(BaseSchema):
|
||||||
|
|||||||
Reference in New Issue
Block a user