mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-26 18:40:53 +00:00
revert: Python 3.8 compatibility (#7690)
* revert: Python 3.8 compatibility * update(settings.py): default value for CACHE * fix(settings.py): fetch redis cfg locations from env * update requirements * feat(gitcli::test.yml): support redis test * feat(gitcli::test.yml): support redis test * style(gitcli::test.yml): trailing blank line
This commit is contained in:
parent
dd3f25e216
commit
6d9d952079
11
.github/workflows/test.yml
vendored
11
.github/workflows/test.yml
vendored
@ -6,6 +6,7 @@ on:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
REDIS_HOST: localhost
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@ -13,6 +14,12 @@ permissions:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
redis:
|
||||
image: redis:latest
|
||||
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 3
|
||||
ports:
|
||||
- 6379:6379
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
@ -42,6 +49,10 @@ jobs:
|
||||
pip install -r test-requirements.txt
|
||||
sudo rm -rf /usr/lib/python3/dist-packages/pytz/
|
||||
|
||||
- name: Set REDIS_HOST environment variable
|
||||
run: |
|
||||
echo "REDIS_HOST=localhost" >> $GITHUB_ENV
|
||||
|
||||
- name: run pytest
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE
|
||||
|
@ -28,3 +28,4 @@ python-ldap==3.4.*
|
||||
pypinyin==0.52.*
|
||||
dnspython==2.6.*
|
||||
pillow-heif==0.18.*
|
||||
redis==5.0.*
|
||||
|
@ -538,11 +538,8 @@ central_conf_dir = os.environ.get('SEAFILE_CENTRAL_CONF_DIR', '')
|
||||
|
||||
CACHES = {
|
||||
'default': {
|
||||
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
|
||||
'LOCATION': os.path.join(CACHE_DIR, 'seahub_cache'),
|
||||
'OPTIONS': {
|
||||
'MAX_ENTRIES': 1000000
|
||||
}
|
||||
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
|
||||
'LOCATION': 'redis://redis:6379',
|
||||
},
|
||||
}
|
||||
|
||||
@ -1189,53 +1186,52 @@ if 'default' in DATABASES and 'mysql' in DATABASES['default'].get('ENGINE', ''):
|
||||
int(DATABASES['default']['PORT'])
|
||||
except:
|
||||
raise ValueError(f"Invalid database port: {DATABASES['default']['PORT']}")
|
||||
|
||||
match CACHE_PROVIDER := os.getenv('CACHE_PROVIDER', 'redis'):
|
||||
case 'redis':
|
||||
CACHES['default']['BACKEND'] = 'django.core.cache.backends.redis.RedisCache'
|
||||
cfg_redis_host = 'redis'
|
||||
cfg_redis_port = 6379
|
||||
cfg_redis_pwd = ''
|
||||
if 'LOCATION' in CACHES['default']:
|
||||
try:
|
||||
cfg_redis_pwd, redis_host_info = CACHES['default']['LOCATION'].split('@', 1)
|
||||
cfg_redis_host, cfg_redis_port = redis_host_info.split(':', 1)
|
||||
except:
|
||||
cfg_redis_pwd = ''
|
||||
cfg_redis_host, cfg_redis_port = CACHES['default']['LOCATION'].split(':', 1)
|
||||
if not cfg_redis_pwd:
|
||||
try:
|
||||
cfg_redis_pwd = CACHES['default']['OPTIONS']['PASSWORD']
|
||||
except:
|
||||
pass
|
||||
|
||||
redis_host = os.environ.get('REDIS_HOST') or cfg_redis_host
|
||||
redis_port = os.environ.get('REDIS_PORT') or cfg_redis_port
|
||||
redis_pwd = os.environ.get('REDIS_PASSWORD') or cfg_redis_pwd
|
||||
|
||||
CACHES['default']['LOCATION'] = f'redis://{(redis_pwd + "@") if redis_pwd else ""}{redis_host}:{redis_port}'
|
||||
if redis_pwd:
|
||||
CACHE_PROVIDER = os.getenv('CACHE_PROVIDER', 'redis')
|
||||
if CACHE_PROVIDER =='redis':
|
||||
CACHES['default']['BACKEND'] = 'django.core.cache.backends.redis.RedisCache'
|
||||
cfg_redis_host = 'redis'
|
||||
cfg_redis_port = 6379
|
||||
cfg_redis_pwd = ''
|
||||
if 'LOCATION' in CACHES['default']:
|
||||
cache_cfg = CACHES['default'].get('LOCATION').split('://', 1)[-1]
|
||||
try:
|
||||
cfg_redis_pwd, redis_host_info = cache_cfg.split('@', 1)
|
||||
cfg_redis_host, cfg_redis_port = redis_host_info.split(':', 1)
|
||||
except:
|
||||
cfg_redis_host, cfg_redis_port = cache_cfg.split(':', 1)
|
||||
try:
|
||||
del CACHES['default']['OPTIONS']['PASSWORD']
|
||||
cfg_redis_pwd = CACHES['default']['OPTIONS']['PASSWORD']
|
||||
except:
|
||||
pass
|
||||
|
||||
case 'memcached':
|
||||
redis_host = os.environ.get('REDIS_HOST') or cfg_redis_host
|
||||
redis_port = os.environ.get('REDIS_PORT') or cfg_redis_port
|
||||
redis_pwd = os.environ.get('REDIS_PASSWORD') or cfg_redis_pwd
|
||||
|
||||
CACHES['default']['LOCATION'] = f'redis://{(redis_pwd + "@") if redis_pwd else ""}{redis_host}:{redis_port}'
|
||||
if redis_pwd:
|
||||
try:
|
||||
conf_mem_host, conf_mem_port = CACHES['default']['LOCATION'].split(':')
|
||||
del CACHES['default']['OPTIONS']['PASSWORD']
|
||||
except:
|
||||
conf_mem_host = 'memcached'
|
||||
conf_mem_port = 11211
|
||||
pass
|
||||
|
||||
mem_host = os.getenv('MEMCACHED_HOST') or conf_mem_host
|
||||
mem_port = int(os.getenv('MEMCACHED_PORT', 0)) or conf_mem_port
|
||||
elif CACHE_PROVIDER == 'memcached':
|
||||
try:
|
||||
conf_mem_host, conf_mem_port = CACHES['default']['LOCATION'].split(':')
|
||||
except:
|
||||
conf_mem_host = 'memcached'
|
||||
conf_mem_port = 11211
|
||||
|
||||
CACHES['default'] = {
|
||||
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
|
||||
'LOCATION': f'{mem_host}:{mem_port}'
|
||||
}
|
||||
case _:
|
||||
raise ValueError(f'Invalid CACHE_PROVIDER: {CACHE_PROVIDER}')
|
||||
mem_host = os.getenv('MEMCACHED_HOST') or conf_mem_host
|
||||
mem_port = int(os.getenv('MEMCACHED_PORT', 0)) or conf_mem_port
|
||||
|
||||
CACHES['default'] = {
|
||||
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
|
||||
'LOCATION': f'{mem_host}:{mem_port}'
|
||||
}
|
||||
else:
|
||||
raise ValueError(f'Invalid CACHE_PROVIDER: {CACHE_PROVIDER}')
|
||||
|
||||
if os.environ.get('ENABLE_SEADOC', ''):
|
||||
ENABLE_SEADOC = os.environ.get('ENABLE_SEADOC', '').lower() == 'true'
|
||||
|
Loading…
Reference in New Issue
Block a user