mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-13 09:59:01 +08:00
feat: add redis ssl support (#65)
This commit is contained in:
parent
0587ff0fba
commit
f8eefa31fe
@ -21,9 +21,11 @@ DEFAULTS = {
|
|||||||
'REDIS_HOST': 'localhost',
|
'REDIS_HOST': 'localhost',
|
||||||
'REDIS_PORT': '6379',
|
'REDIS_PORT': '6379',
|
||||||
'REDIS_DB': '0',
|
'REDIS_DB': '0',
|
||||||
|
'REDIS_USE_SSL': 'False',
|
||||||
'SESSION_REDIS_HOST': 'localhost',
|
'SESSION_REDIS_HOST': 'localhost',
|
||||||
'SESSION_REDIS_PORT': '6379',
|
'SESSION_REDIS_PORT': '6379',
|
||||||
'SESSION_REDIS_DB': '2',
|
'SESSION_REDIS_DB': '2',
|
||||||
|
'SESSION_REDIS_USE_SSL': 'False',
|
||||||
'OAUTH_REDIRECT_PATH': '/console/api/oauth/authorize',
|
'OAUTH_REDIRECT_PATH': '/console/api/oauth/authorize',
|
||||||
'OAUTH_REDIRECT_INDEX_PATH': '/',
|
'OAUTH_REDIRECT_INDEX_PATH': '/',
|
||||||
'CONSOLE_URL': 'https://cloud.dify.ai',
|
'CONSOLE_URL': 'https://cloud.dify.ai',
|
||||||
@ -105,14 +107,18 @@ class Config:
|
|||||||
# redis settings
|
# redis settings
|
||||||
self.REDIS_HOST = get_env('REDIS_HOST')
|
self.REDIS_HOST = get_env('REDIS_HOST')
|
||||||
self.REDIS_PORT = get_env('REDIS_PORT')
|
self.REDIS_PORT = get_env('REDIS_PORT')
|
||||||
|
self.REDIS_USERNAME = get_env('REDIS_USERNAME')
|
||||||
self.REDIS_PASSWORD = get_env('REDIS_PASSWORD')
|
self.REDIS_PASSWORD = get_env('REDIS_PASSWORD')
|
||||||
self.REDIS_DB = get_env('REDIS_DB')
|
self.REDIS_DB = get_env('REDIS_DB')
|
||||||
|
self.REDIS_USE_SSL = get_bool_env('REDIS_USE_SSL')
|
||||||
|
|
||||||
# session redis settings
|
# session redis settings
|
||||||
self.SESSION_REDIS_HOST = get_env('SESSION_REDIS_HOST')
|
self.SESSION_REDIS_HOST = get_env('SESSION_REDIS_HOST')
|
||||||
self.SESSION_REDIS_PORT = get_env('SESSION_REDIS_PORT')
|
self.SESSION_REDIS_PORT = get_env('SESSION_REDIS_PORT')
|
||||||
|
self.SESSION_REDIS_USERNAME = get_env('SESSION_REDIS_USERNAME')
|
||||||
self.SESSION_REDIS_PASSWORD = get_env('SESSION_REDIS_PASSWORD')
|
self.SESSION_REDIS_PASSWORD = get_env('SESSION_REDIS_PASSWORD')
|
||||||
self.SESSION_REDIS_DB = get_env('SESSION_REDIS_DB')
|
self.SESSION_REDIS_DB = get_env('SESSION_REDIS_DB')
|
||||||
|
self.SESSION_REDIS_USE_SSL = get_bool_env('SESSION_REDIS_USE_SSL')
|
||||||
|
|
||||||
# storage settings
|
# storage settings
|
||||||
self.STORAGE_TYPE = get_env('STORAGE_TYPE')
|
self.STORAGE_TYPE = get_env('STORAGE_TYPE')
|
||||||
@ -165,6 +171,7 @@ class Config:
|
|||||||
self.CELERY_BACKEND = get_env('CELERY_BACKEND')
|
self.CELERY_BACKEND = get_env('CELERY_BACKEND')
|
||||||
self.CELERY_RESULT_BACKEND = 'db+{}'.format(self.SQLALCHEMY_DATABASE_URI) \
|
self.CELERY_RESULT_BACKEND = 'db+{}'.format(self.SQLALCHEMY_DATABASE_URI) \
|
||||||
if self.CELERY_BACKEND == 'database' else self.CELERY_BROKER_URL
|
if self.CELERY_BACKEND == 'database' else self.CELERY_BROKER_URL
|
||||||
|
self.BROKER_USE_SSL = self.CELERY_BROKER_URL.startswith('rediss://')
|
||||||
|
|
||||||
# hosted provider credentials
|
# hosted provider credentials
|
||||||
self.OPENAI_API_KEY = get_env('OPENAI_API_KEY')
|
self.OPENAI_API_KEY = get_env('OPENAI_API_KEY')
|
||||||
|
@ -15,9 +15,24 @@ def init_app(app: Flask) -> Celery:
|
|||||||
backend=app.config["CELERY_BACKEND"],
|
backend=app.config["CELERY_BACKEND"],
|
||||||
task_ignore_result=True,
|
task_ignore_result=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Add SSL options to the Celery configuration
|
||||||
|
ssl_options = {
|
||||||
|
"ssl_cert_reqs": None,
|
||||||
|
"ssl_ca_certs": None,
|
||||||
|
"ssl_certfile": None,
|
||||||
|
"ssl_keyfile": None,
|
||||||
|
}
|
||||||
|
|
||||||
celery_app.conf.update(
|
celery_app.conf.update(
|
||||||
result_backend=app.config["CELERY_RESULT_BACKEND"],
|
result_backend=app.config["CELERY_RESULT_BACKEND"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if app.config["BROKER_USE_SSL"]:
|
||||||
|
celery_app.conf.update(
|
||||||
|
broker_use_ssl=ssl_options, # Add the SSL options to the broker configuration
|
||||||
|
)
|
||||||
|
|
||||||
celery_app.set_default()
|
celery_app.set_default()
|
||||||
app.extensions["celery"] = celery_app
|
app.extensions["celery"] = celery_app
|
||||||
return celery_app
|
return celery_app
|
||||||
|
@ -1,18 +1,23 @@
|
|||||||
import redis
|
import redis
|
||||||
|
from redis.connection import SSLConnection, Connection
|
||||||
|
|
||||||
redis_client = redis.Redis()
|
redis_client = redis.Redis()
|
||||||
|
|
||||||
|
|
||||||
def init_app(app):
|
def init_app(app):
|
||||||
|
connection_class = Connection
|
||||||
|
if app.config.get('REDIS_USE_SSL', False):
|
||||||
|
connection_class = SSLConnection
|
||||||
|
|
||||||
redis_client.connection_pool = redis.ConnectionPool(**{
|
redis_client.connection_pool = redis.ConnectionPool(**{
|
||||||
'host': app.config.get('REDIS_HOST', 'localhost'),
|
'host': app.config.get('REDIS_HOST', 'localhost'),
|
||||||
'port': app.config.get('REDIS_PORT', 6379),
|
'port': app.config.get('REDIS_PORT', 6379),
|
||||||
|
'username': app.config.get('REDIS_USERNAME', None),
|
||||||
'password': app.config.get('REDIS_PASSWORD', None),
|
'password': app.config.get('REDIS_PASSWORD', None),
|
||||||
'db': app.config.get('REDIS_DB', 0),
|
'db': app.config.get('REDIS_DB', 0),
|
||||||
'encoding': 'utf-8',
|
'encoding': 'utf-8',
|
||||||
'encoding_errors': 'strict',
|
'encoding_errors': 'strict',
|
||||||
'decode_responses': False
|
'decode_responses': False
|
||||||
})
|
}, connection_class=connection_class)
|
||||||
|
|
||||||
app.extensions['redis'] = redis_client
|
app.extensions['redis'] = redis_client
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import redis
|
import redis
|
||||||
|
from redis.connection import SSLConnection, Connection
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_session import Session, SqlAlchemySessionInterface, RedisSessionInterface
|
from flask_session import Session, SqlAlchemySessionInterface, RedisSessionInterface
|
||||||
from flask_session.sessions import total_seconds
|
from flask_session.sessions import total_seconds
|
||||||
@ -23,16 +24,21 @@ def init_app(app):
|
|||||||
if session_type == 'sqlalchemy':
|
if session_type == 'sqlalchemy':
|
||||||
app.session_interface = sqlalchemy_session_interface
|
app.session_interface = sqlalchemy_session_interface
|
||||||
elif session_type == 'redis':
|
elif session_type == 'redis':
|
||||||
|
connection_class = Connection
|
||||||
|
if app.config.get('SESSION_REDIS_USE_SSL', False):
|
||||||
|
connection_class = SSLConnection
|
||||||
|
|
||||||
sess_redis_client = redis.Redis()
|
sess_redis_client = redis.Redis()
|
||||||
sess_redis_client.connection_pool = redis.ConnectionPool(**{
|
sess_redis_client.connection_pool = redis.ConnectionPool(**{
|
||||||
'host': app.config.get('SESSION_REDIS_HOST', 'localhost'),
|
'host': app.config.get('SESSION_REDIS_HOST', 'localhost'),
|
||||||
'port': app.config.get('SESSION_REDIS_PORT', 6379),
|
'port': app.config.get('SESSION_REDIS_PORT', 6379),
|
||||||
|
'username': app.config.get('SESSION_REDIS_USERNAME', None),
|
||||||
'password': app.config.get('SESSION_REDIS_PASSWORD', None),
|
'password': app.config.get('SESSION_REDIS_PASSWORD', None),
|
||||||
'db': app.config.get('SESSION_REDIS_DB', 2),
|
'db': app.config.get('SESSION_REDIS_DB', 2),
|
||||||
'encoding': 'utf-8',
|
'encoding': 'utf-8',
|
||||||
'encoding_errors': 'strict',
|
'encoding_errors': 'strict',
|
||||||
'decode_responses': False
|
'decode_responses': False
|
||||||
})
|
}, connection_class=connection_class)
|
||||||
|
|
||||||
app.extensions['session_redis'] = sess_redis_client
|
app.extensions['session_redis'] = sess_redis_client
|
||||||
|
|
||||||
|
@ -36,14 +36,18 @@ services:
|
|||||||
# It is consistent with the configuration in the 'redis' service below.
|
# It is consistent with the configuration in the 'redis' service below.
|
||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
REDIS_PORT: 6379
|
REDIS_PORT: 6379
|
||||||
|
REDIS_USERNAME: ''
|
||||||
REDIS_PASSWORD: difyai123456
|
REDIS_PASSWORD: difyai123456
|
||||||
|
REDIS_USE_SSL: 'false'
|
||||||
# use redis db 0 for redis cache
|
# use redis db 0 for redis cache
|
||||||
REDIS_DB: 0
|
REDIS_DB: 0
|
||||||
# The configurations of session, Supported values are `sqlalchemy`. `redis`
|
# The configurations of session, Supported values are `sqlalchemy`. `redis`
|
||||||
SESSION_TYPE: redis
|
SESSION_TYPE: redis
|
||||||
SESSION_REDIS_HOST: redis
|
SESSION_REDIS_HOST: redis
|
||||||
SESSION_REDIS_PORT: 6379
|
SESSION_REDIS_PORT: 6379
|
||||||
|
SESSION_REDIS_USERNAME: ''
|
||||||
SESSION_REDIS_PASSWORD: difyai123456
|
SESSION_REDIS_PASSWORD: difyai123456
|
||||||
|
SESSION_REDIS_USE_SSL: 'false'
|
||||||
# use redis db 2 for session store
|
# use redis db 2 for session store
|
||||||
SESSION_REDIS_DB: 2
|
SESSION_REDIS_DB: 2
|
||||||
# The configurations of celery broker.
|
# The configurations of celery broker.
|
||||||
@ -129,8 +133,10 @@ services:
|
|||||||
# The configurations of redis cache connection.
|
# The configurations of redis cache connection.
|
||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
REDIS_PORT: 6379
|
REDIS_PORT: 6379
|
||||||
|
REDIS_USERNAME: ''
|
||||||
REDIS_PASSWORD: difyai123456
|
REDIS_PASSWORD: difyai123456
|
||||||
REDIS_DB: 0
|
REDIS_DB: 0
|
||||||
|
REDIS_USE_SSL: 'false'
|
||||||
# The configurations of celery broker.
|
# The configurations of celery broker.
|
||||||
CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1
|
CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1
|
||||||
# The type of storage to use for storing user files. Supported values are `local` and `s3`, Default: `local`
|
# The type of storage to use for storing user files. Supported values are `local` and `s3`, Default: `local`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user