ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

django-腾讯paas-appengine阅读

2020-01-28 17:02:16  阅读:211  来源: 互联网

标签:paas bk request django json kwargs server data appengine


1 重写View基类的dispatch函数

api/baseview.py

把application/json做json.loads改成dict类型

class BaseView(View):

    def dispatch(self, request, *args, **kwargs):
        if request.method == "POST":
            if "application/json" in self.request.META["CONTENT_TYPE"]:
                if request.body:
                    request.json_data = json.loads(request.body)
                else:
                    request.json_data = {}
        return super(BaseView, self).dispatch(request, *args, **kwargs)

  

2 自定义异常

api/response.py

class FailJsonResponse(JsonResponse):
    def __init__(self, message, **kwargs):
        data = {}
        if kwargs:
            data.update(kwargs)

        # high priority
        data.update({
            "result": False,
            "message": message
        })

        if "data" not in data:
            data["data"] = {}

        super(FailJsonResponse, self).__init__(data)

  

3 对app做健康检查

api/utils.py

def agent_header(sid, token):
    return {
        "Content-Type": "application/json",
        "X-ID": str(sid),
        "X-TOKEN": str(token)
    }


def check_agent_health(bk_server):
    resp = http.http_request(
        method="GET",
        url="http://%s:%s/v1/app/healthz" % (bk_server.ip_address, bk_server.ip_port),
        headers=agent_header(bk_server.s_id, bk_server.token)
    )
    if resp.get("error") != 0:
        raise Exception("%s agent return not zero" % bk_server.ip_address)
    return resp

  

4 使用UUIDField

api/models.py

class BkServer(models.Model):
    name = models.CharField(u'名称', max_length=20)
    s_id = models.UUIDField(u'服务ID', default=uuid.uuid4, editable=False)
    token = models.UUIDField(default=uuid.uuid4, editable=False)

  

5 写JsonResponse的子类来处理json信息

标签:paas,bk,request,django,json,kwargs,server,data,appengine
来源: https://www.cnblogs.com/jabbok/p/12230227.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有