Обновить
0
0

Пользователь

Отправить сообщение

Может туплю, но не совсем понял как в dishka сделать разные конфиги одного и того же instance в разные provide. У меня вот есть функция get_task_client, и вот не совсем понимаю как мне передать в `get_task_storage` таск клиент с одной бд, а в `get_skill_storage` с другой.
@Tishka17

class SkillRouterProvider(Provider):
    scope = Scope.APP

    @provide
    async def get_task_client(self) -> StorageClient:
        if settings.redis_host and settings.redis_port:
            return RedisStorageClient(
                host=settings.redis_host,
                port=settings.redis_port,
                db=settings.redis_db
            )
        logger.warning(msg="Redis storage is not configured, in-memory cache storage will be used.")
        return DefaultStorageClient()

    @provide
    async def get_task_storage(self, client: StorageClient) -> TaskStorage:  # type: ignore[return-value]
        return TaskStorage(client=client) # здесь хочу db=settings.redis_task_db

    @provide
    async def get_skill_storage(self, client: StorageClient) -> SkillStorage:  # type: ignore[return-value]
        return SkillStorage(client=client) # здесь хочу db=settings.redis_skill_db


Сравнивал рекомендации из Spotify и Deezer. У Яндекса были субъективно самые лучшие.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
От 110 000 ₽
Git
Python
PostgreSQL
SQL
ООП
Linux
Docker
Django
Redis
Golang