This commit is contained in:
2022-01-20 11:40:08 +03:00
parent 71258864d2
commit 2f222ee55d
10 changed files with 212 additions and 75 deletions

View File

@@ -1,6 +1,7 @@
from fastapi import FastAPI
from app.views import router
from core.arq_pool import get_arq_pool
from core.db import database
@@ -17,6 +18,8 @@ def start_app() -> FastAPI:
if not database_.is_connected:
await database_.connect()
app.state.arq_pool = await get_arq_pool()
@app.on_event("shutdown")
async def shutdown() -> None:
database_ = app.state.database

15
src/core/arq_pool.py Normal file
View File

@@ -0,0 +1,15 @@
from arq.connections import create_pool, RedisSettings, ArqRedis
from core.config import env_config
def get_redis_settings() -> RedisSettings:
return RedisSettings(
host=env_config.REDIS_HOST,
port=env_config.REDIS_PORT,
database=env_config.REDIS_DB,
)
async def get_arq_pool() -> ArqRedis:
return await create_pool(get_redis_settings())

View File

@@ -19,5 +19,9 @@ class EnvConfig(BaseSettings):
FILES_SERVER_API_KEY: str
FILES_SERVER_URL: str
REDIS_HOST: str
REDIS_PORT: int
REDIS_DB: int
env_config = EnvConfig()

27
src/core/setup_arq.py Normal file
View File

@@ -0,0 +1,27 @@
from app.services.cache_updater import (
check_books,
cache_file_by_book_id,
check_books_page,
)
from core.arq_pool import get_redis_settings, get_arq_pool
from core.db import database
async def startup(ctx):
if not database.is_connected:
await database.connect()
ctx["arc_pool"] = await get_arq_pool()
async def shutdown(ctx):
if database.is_connected:
await database.disconnect()
class WorkerSettings:
functions = [check_books, cache_file_by_book_id, check_books_page]
on_startup = startup
on_shutdown = shutdown
redis_settings = get_redis_settings()
max_jobs = 4