Пример #1
0
def clear_old_indexes(site: SiteConfiguration,
                      config: Optional[AppConfiguration] = None):
    if config is None:
        config = AppConfiguration()
    keys = Keys(config.key_prefix)
    index_alias = keys.index_alias(site.url)
    redis_client = get_search_connection(index_alias)
    try:
        current_index = redis_client.info()['index_name']
    except ResponseError:
        log.error("Index alias does not exist: %s", index_alias)
        current_index = None

    old_indexes = [
        i for i in redis_client.redis.execute_command('FT._LIST')
        if i.startswith(index_alias) and i != current_index
    ]

    for idx in old_indexes:
        redis_client.redis.execute_command('FT.DROPINDEX', idx)

    return True
Пример #2
0
import logging

import click

from sitesearch import tasks
from sitesearch.config import AppConfiguration


config = AppConfiguration()
log = logging.getLogger(__name__)


@click.argument('site')
@click.command()
def index(site):
    """Index the app's configured sites in RediSearch."""
    site = config.sites.get(site)

    if site is None:
        valid_sites = ", ".join(config.sites.keys())
        raise click.BadArgumentUsage(
            f"The site you gave does not exist. Valid sites: {valid_sites}")

    tasks.index(site, force=True)
Пример #3
0
def app_config():
    yield AppConfiguration(key_prefix="sitesearch:test", env="test")