mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-27 11:01:14 +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:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
REDIS_HOST: localhost
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@ -13,6 +14,12 @@ permissions:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
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:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v4
|
||||||
@ -42,6 +49,10 @@ jobs:
|
|||||||
pip install -r test-requirements.txt
|
pip install -r test-requirements.txt
|
||||||
sudo rm -rf /usr/lib/python3/dist-packages/pytz/
|
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
|
- name: run pytest
|
||||||
run: |
|
run: |
|
||||||
cd $GITHUB_WORKSPACE
|
cd $GITHUB_WORKSPACE
|
||||||
|
@ -28,3 +28,4 @@ python-ldap==3.4.*
|
|||||||
pypinyin==0.52.*
|
pypinyin==0.52.*
|
||||||
dnspython==2.6.*
|
dnspython==2.6.*
|
||||||
pillow-heif==0.18.*
|
pillow-heif==0.18.*
|
||||||
|
redis==5.0.*
|
||||||
|
@ -538,11 +538,8 @@ central_conf_dir = os.environ.get('SEAFILE_CENTRAL_CONF_DIR', '')
|
|||||||
|
|
||||||
CACHES = {
|
CACHES = {
|
||||||
'default': {
|
'default': {
|
||||||
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
|
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
|
||||||
'LOCATION': os.path.join(CACHE_DIR, 'seahub_cache'),
|
'LOCATION': 'redis://redis:6379',
|
||||||
'OPTIONS': {
|
|
||||||
'MAX_ENTRIES': 1000000
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1189,53 +1186,52 @@ if 'default' in DATABASES and 'mysql' in DATABASES['default'].get('ENGINE', ''):
|
|||||||
int(DATABASES['default']['PORT'])
|
int(DATABASES['default']['PORT'])
|
||||||
except:
|
except:
|
||||||
raise ValueError(f"Invalid database port: {DATABASES['default']['PORT']}")
|
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
|
CACHE_PROVIDER = os.getenv('CACHE_PROVIDER', 'redis')
|
||||||
redis_port = os.environ.get('REDIS_PORT') or cfg_redis_port
|
if CACHE_PROVIDER =='redis':
|
||||||
redis_pwd = os.environ.get('REDIS_PASSWORD') or cfg_redis_pwd
|
CACHES['default']['BACKEND'] = 'django.core.cache.backends.redis.RedisCache'
|
||||||
|
cfg_redis_host = 'redis'
|
||||||
CACHES['default']['LOCATION'] = f'redis://{(redis_pwd + "@") if redis_pwd else ""}{redis_host}:{redis_port}'
|
cfg_redis_port = 6379
|
||||||
if redis_pwd:
|
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:
|
try:
|
||||||
del CACHES['default']['OPTIONS']['PASSWORD']
|
cfg_redis_pwd = CACHES['default']['OPTIONS']['PASSWORD']
|
||||||
except:
|
except:
|
||||||
pass
|
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:
|
try:
|
||||||
conf_mem_host, conf_mem_port = CACHES['default']['LOCATION'].split(':')
|
del CACHES['default']['OPTIONS']['PASSWORD']
|
||||||
except:
|
except:
|
||||||
conf_mem_host = 'memcached'
|
pass
|
||||||
conf_mem_port = 11211
|
|
||||||
|
|
||||||
mem_host = os.getenv('MEMCACHED_HOST') or conf_mem_host
|
elif CACHE_PROVIDER == 'memcached':
|
||||||
mem_port = int(os.getenv('MEMCACHED_PORT', 0)) or conf_mem_port
|
try:
|
||||||
|
conf_mem_host, conf_mem_port = CACHES['default']['LOCATION'].split(':')
|
||||||
|
except:
|
||||||
|
conf_mem_host = 'memcached'
|
||||||
|
conf_mem_port = 11211
|
||||||
|
|
||||||
CACHES['default'] = {
|
mem_host = os.getenv('MEMCACHED_HOST') or conf_mem_host
|
||||||
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
|
mem_port = int(os.getenv('MEMCACHED_PORT', 0)) or conf_mem_port
|
||||||
'LOCATION': f'{mem_host}:{mem_port}'
|
|
||||||
}
|
CACHES['default'] = {
|
||||||
case _:
|
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
|
||||||
raise ValueError(f'Invalid CACHE_PROVIDER: {CACHE_PROVIDER}')
|
'LOCATION': f'{mem_host}:{mem_port}'
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
raise ValueError(f'Invalid CACHE_PROVIDER: {CACHE_PROVIDER}')
|
||||||
|
|
||||||
if os.environ.get('ENABLE_SEADOC', ''):
|
if os.environ.get('ENABLE_SEADOC', ''):
|
||||||
ENABLE_SEADOC = os.environ.get('ENABLE_SEADOC', '').lower() == 'true'
|
ENABLE_SEADOC = os.environ.get('ENABLE_SEADOC', '').lower() == 'true'
|
||||||
|
Loading…
Reference in New Issue
Block a user