def sync_options(cutoff=ONE_HOUR): """ Ensures all options that have been updated (within the database) since ``cutoff`` have their correct values stored in the cache. This **does not** guarantee that the correct value is written into the cache though it will correct itself in the next update window. """ cutoff_dt = timezone.now() - timedelta(seconds=cutoff) # TODO(dcramer): this doesnt handle deleted options (which shouldn't be allowed) for option in Option.objects.filter(last_updated__gte=cutoff_dt).iterator(): try: opt = default_manager.lookup_key(option.key) default_manager.update_cached_value(opt.cache_key, option.value) except UnknownOption as e: logger.exception(unicode(e))
def get(option, silent): "Get a configuration option." from django.conf import settings from sentry.options import default_manager as manager from sentry.options.manager import UnknownOption try: key = manager.lookup_key(option) except UnknownOption: raise click.ClickException('unknown option: %s' % option) value = manager.get(key.name) if silent: click.echo(value) return # TODO(mattrobenolt): Add help to option keys # if key.help: # click.echo(key.help + '\n') click.echo(' from config: %s' % settings.SENTRY_OPTIONS.get(key.name, '<not set>')) click.echo(' current: %s' % value)