Yangi notification model va RabbitMQ ulanish funksiyalari qo'shildi

This commit is contained in:
A'zamov Samandar
2025-04-21 20:06:20 +05:00
parent 80fa39bd1b
commit a777752e17
4 changed files with 37 additions and 1 deletions

View File

@@ -0,0 +1 @@
package models

View File

@@ -0,0 +1,21 @@
# rabbitmq.py
from kombu import Exchange, Producer
from .rabbitmq import get_connection
_channel = None
_exchange = Exchange('notification', type='direct')
_producer = None
def get_producer():
global _producer, _channel
if _producer is None:
conn = get_connection()
_channel = conn.channel()
_producer = Producer(_channel, exchange=_exchange, routing_key="notification")
return _producer
def send_notification(message: dict):
producer = get_producer()
producer.publish(message, serializer='json')

View File

@@ -0,0 +1,15 @@
# rabbitmq.py
from kombu import Connection
rabbit_url = 'amqp://guest:guest@rabbitmq:5672/'
_connection = None
def get_connection():
global _connection
if _connection is None or not _connection.connected:
_connection = Connection(rabbit_url)
_connection.ensure_connection(max_retries=3)
return _connection

View File

@@ -10,7 +10,6 @@ CACHES = {
CACHE_MIDDLEWARE_SECONDS = env("CACHE_TIMEOUT") CACHE_MIDDLEWARE_SECONDS = env("CACHE_TIMEOUT")
CACHEOPS_REDIS = env.str("REDIS_URL") CACHEOPS_REDIS = env.str("REDIS_URL")
CACHEOPS_DEFAULTS = { CACHEOPS_DEFAULTS = {
"timeout": env.str("CACHE_TIMEOUT"), "timeout": env.str("CACHE_TIMEOUT"),