diff --git a/backend/app/task/celery.py b/backend/app/task/celery.py index 8047bb5e..9d94353d 100644 --- a/backend/app/task/celery.py +++ b/backend/app/task/celery.py @@ -1,4 +1,5 @@ import os +import urllib.parse import celery import celery_aio_pool @@ -28,11 +29,11 @@ def init_celery() -> celery.Celery: celery.app.trace.build_tracer = celery_aio_pool.build_async_tracer celery.app.trace.reset_worker_optimizations() - broker_url = f'amqp://{settings.CELERY_RABBITMQ_USERNAME}:{settings.CELERY_RABBITMQ_PASSWORD}@{settings.CELERY_RABBITMQ_HOST}:{settings.CELERY_RABBITMQ_PORT}/{settings.CELERY_RABBITMQ_VHOST}' + broker_url = f'amqp://{settings.CELERY_RABBITMQ_USERNAME}:{urllib.parse.quote(settings.CELERY_RABBITMQ_PASSWORD)}@{settings.CELERY_RABBITMQ_HOST}:{settings.CELERY_RABBITMQ_PORT}/{settings.CELERY_RABBITMQ_VHOST}' if settings.CELERY_BROKER == 'redis': - broker_url = f'redis://:{settings.REDIS_PASSWORD}@{settings.REDIS_HOST}:{settings.REDIS_PORT}/{settings.CELERY_BROKER_REDIS_DATABASE}' + broker_url = f'redis://:{urllib.parse.quote(settings.REDIS_PASSWORD)}@{settings.REDIS_HOST}:{settings.REDIS_PORT}/{settings.CELERY_BROKER_REDIS_DATABASE}' - result_backend = f'db+postgresql+psycopg://{settings.DATABASE_USER}:{settings.DATABASE_PASSWORD}@{settings.DATABASE_HOST}:{settings.DATABASE_PORT}/{settings.DATABASE_SCHEMA}' + result_backend = f'db+postgresql+psycopg://{settings.DATABASE_USER}:{urllib.parse.quote(settings.DATABASE_PASSWORD)}@{settings.DATABASE_HOST}:{settings.DATABASE_PORT}/{settings.DATABASE_SCHEMA}' if DataBaseType.mysql == settings.DATABASE_TYPE: result_backend = result_backend.replace('postgresql+psycopg', 'mysql+pymysql') diff --git a/backend/common/socketio/server.py b/backend/common/socketio/server.py index 380ae130..6e237878 100644 --- a/backend/common/socketio/server.py +++ b/backend/common/socketio/server.py @@ -1,3 +1,5 @@ +import urllib.parse + import socketio from backend.common.log import log @@ -8,7 +10,7 @@ from backend.database.redis import redis_client # 创建 Socket.IO 服务器实例 sio = socketio.AsyncServer( client_manager=socketio.AsyncRedisManager( - f'redis://:{settings.REDIS_PASSWORD}@{settings.REDIS_HOST}:{settings.REDIS_PORT}/{settings.REDIS_DATABASE}', + f'redis://:{urllib.parse.quote(settings.REDIS_PASSWORD)}@{settings.REDIS_HOST}:{settings.REDIS_PORT}/{settings.REDIS_DATABASE}', ), async_mode='asgi', cors_allowed_origins=settings.CORS_ALLOWED_ORIGINS,