Ошибка подключения Redis на сервере приложений с django - PullRequest
0 голосов
/ 13 февраля 2020

после удаления попытки, кроме блока из кода, я получаю эту ошибку

снимок экрана почтальона с ошибкой

Я пытаюсь подключить Redis на сервере приложений к django. При проверке API в почтальоне я получаю сообщение о том, что перед выходным значением указана переменная вывода. Но API работает хорошо для Redis, который я скачал в моем локальном, и я получаю вывод, как ожидалось. Я думаю, что я ошибся, указав учетные данные в файле settings.py. Я хотел бы, чтобы кто-то помог мне выложить эту ошибку. Ниже я приложил учетные данные Redis кеша,

CACHES = {
        "default" : {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis:// 3.233.27.21:6379/1",
            "TIMEOUT": 86400 ,
            "OPTION": {            
                "PASSWORD": "XXXXXXX", 
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            },
            "KEY_PREFIX": "XXXXXX"
        }
    }

Функция, views.py

from django.shortcuts import render
from django.views.decorators.cache import cache_page
from django.core.cache import cache
from django.db import connection
from rest_framework import status
from rest_framework.status import (
    HTTP_400_BAD_REQUEST,
    HTTP_404_NOT_FOUND,
    HTTP_200_OK
)
from rest_framework.response import Response
from rest_framework.decorators import api_view
import json
import pandas as pd
from django.http import JsonResponse
@api_view(['POST'])
def cost_trend(request):

    with connection.cursor() as cursor:
        try:
            body_unicode = request.body.decode('utf-8')
            body_data = json.loads(body_unicode)
            year = body_data.get("year")
            employer = body_data.get("employer")           
            if employer != None and year != None:
                result = []          
                if 'cost_trend' in cache:#checking whether the key is in cache
                    results = cache.get('cost_trend')
                    for r in results:
                            if r['egnid'] == employer and r['dt'] == int(year):
                                result.append(r)
                    df  = pd.DataFrame(result,columns = ['paid_amt','month']) 
                    df = json.loads(df.to_json(orient = 'records'))#making the filtered data as json
                    value = 0
                    for i in df:
                        value = value + i['paid_amt']
                        i['paid_amt'] = value

                else:#if not, the data is fetched from database and stored in cache   
                    sql_query = """select json_agg(amt)
                             from
                            (select json_build_object('paid_amt',round(sum(paid_amt))::int,'month',
                            TO_CHAR(svc_from_date,'MON YYYY'),'egnid',eg_nid,'dt',extract(year from svc_from_date)) amt
                            from application.ckd_details
                            where left(paid_amt::text,1) != '-'
                            group by TO_CHAR(svc_from_date,'MON YYYY') ,eg_nid,extract(year from svc_from_date)
                            order by to_date(TO_CHAR(svc_from_date,'MON YYYY'),'MON YYYY'))a;"""

                    cursor.execute(sql_query)
                    results = cursor.fetchone()[0] 
                    connection.commit()
                    cache.set('cost_trend',results)
                    for r in results:
                        if r['egnid'] == employer and r['dt'] == int(year):
                            result.append(r)
                    df  = pd.DataFrame(result,columns = ['paid_amt','month']) 
                    df = json.loads(df.to_json(orient = 'records'))
                    value = 0
                    for i in df:
                        value = value + i['paid_amt']
                        i['paid_amt'] = value

            else:
                df = "Invalid input type"
            connection.close()    
        except:
            print("Error")
            connection.close()
    return Response(df)

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...