Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将应用程序内服务器redis与django连接时出错_Django_Redis - Fatal编程技术网

将应用程序内服务器redis与django连接时出错

将应用程序内服务器redis与django连接时出错,django,redis,Django,Redis,我正在尝试连接redis,应用程序内服务器和django。虽然 在postman中检查api时,我得到一个错误,输出 变量在赋值之前被引用。但是这个api对我们来说很有用 我在本地下载的redis,我得到了 输出符合预期。我想我在给出答案时出错了 settings.py文件中的凭据。我想要有人帮我 来纠正这个错误。我已附加redis缓存凭据 下面, 功能,, views.py 先谢谢你 “分配前引用了输出变量”,你能分享一下你的观点吗?请访问上面描述的链接,我添加了邮递员的图像,在那里我得到了错

我正在尝试连接redis,应用程序内服务器和django。虽然 在postman中检查api时,我得到一个错误,输出 变量在赋值之前被引用。但是这个api对我们来说很有用 我在本地下载的redis,我得到了 输出符合预期。我想我在给出答案时出错了 settings.py文件中的凭据。我想要有人帮我 来纠正这个错误。我已附加redis缓存凭据 下面,

功能,, views.py

先谢谢你


“分配前引用了输出变量”,你能分享一下你的观点吗?请访问上面描述的链接,我添加了邮递员的图像,在那里我得到了错误,即使我有疑问,由于redis是在apps server中下载的,所以我必须使用unix域socketi将建议您添加该视图和错误跟踪。那张照片没用,谢谢。我解决了这个错误。
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"
        }
    }
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)