Где я могу найти ID для службы кэширования Redis, запущенной в контейнере?
я разрабатываю сервис ставок, который получает ставки из кэша (Django, Redis), который имеет свой собственный контейнер.
class CachedTraderRepository:
def get_rate(self, pair):
print("GET RATE START")
print(pair)
pair_rate = cache.get(pair)
print(pair_rate)
print("GET RATE END")
return pair_rate
def get_all_rates(self):
print("GET ALL RATES START")
all_rates = cache.get("all_pairs")
print(all_rates)
print("GET ALL RATES END")
return all_rates
У меня есть скрипт, который заполняет кэш нужными мне данными, и в том же скрипте я сделал метод для получения тех же данных, и он работает. Заполняет кэш, и когда я делаю cache.get(), я вижу ожидаемые результаты.
class CacheWorker:
def fill_cache(self):
print("START")
pair_queryset = Pair.objects.all()
pairs = []
print("retrieving pair queryset")
for pair in pair_queryset:
pairs.append(pair.name)
print("pair list: ", pairs)
all_rates = SandboxTraderSDK(account="martin").get_multiple_pair_response(pairs)
print("rates: ", all_rates)
cache.set("all_rates", all_rates)
print("Cache filled")
print("END")
def get_cache(self):
print("START")
a = cache.get("all_rates")
print(a)
print("END")
Проблема в том, что я не вижу того же результата, когда выполняю его из класса:
Shell:
In [8]: CachedTraderRepository.get_all_rates()
GET ALL RATES START
None
GET ALL RATES END
Так я думаю, что кэш django имеет 2 экземпляра или что-то вроде этого, как я могу вывести ID клиента Redis или что-то подобное, чтобы убедиться, что оба кода выполняются на одном и том же кэше?
Conf:
CACHES = {}
if USE_REDIS:
CACHES.update(
{
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": env("DJANGO_CACHE_LOCATION"),
"OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient"},
"KEY_PREFIX": "default",
}
}
)
else:
CACHES.update(
{
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
"LOCATION": "unique-snowflake",
}
}
)