zeKe

openresty使用Lua开发简单功能页面

本文章记录使用lua开发简单API功能页. 前言 开发过程中遇到一些特别简单的接口需求,但是单独写一个api接口页面又很麻烦的需求,这个时候可以借助lua来实现. 思路 将简单api功能模块化,统一存放某个路径. 调用时判断模块是否存在,否则返回404. 架构 实现根据字符串加载模块 utils/tools.lua Tools = { _VERSION = "0.1" } -- 字符切割 function Tools:split(s, p) local rt = {} string. Read more...

Django Rest Framework Image Upload

drf
本文章记录在drf框架中实现图片上传功能. models.py import os from uuid import uuid4 from datetime import datetime from django.utils import timezone from django. Read more...

Zabbix常用SQL操作

zabbix
前言 线上API项目中, 有部分常用Zabbix操作, 采用直接读库方式。 本文章记录出现在项目中的常用SQL操作(主要以3.x版本为例),主要使用Python语言做演示。 Zabbix一些对应关系及常量 # 历史表对应ID ZBX_HISTORY_TABLES = ("history", "history_str", "history_log", "history_uint", "history_text") # 一些主要的常量 ZBX_MAPPING = { "EVENT_SOURCE_TRIGGERS": 0, "EVENT_OBJECT_TRIGGER": 0, "TRIGGER_VALUE_FALSE": 0, "SEC_PER_DAY": 86400, "TRIGGER_VALUE_TRUE": 1, "TRIGGER_VALUE_TRUE": 0 常用基础操作 获取主机ID # hostname 主机名 def get_host_id(self, hostname): sql = """ SELECT hg. Read more...

Django Models查库姿势

django
本文章记录django models使用姿势 datetime时间范围查询 查询今天内的的数据 from datetime import datetime from datetime import time now_datetime = datetime.now() min_datetime = datetime. Read more...

使用Django Rest Framework进行API接口开发

drf
本文章记录使用drf框架进行API接口开发 安装 安装模块 pip install djangorestframework 快速启动项目 # 生成一个名为name的项目 django-admin startproject app # 生成名为api的app django-admin startapp api 引入 settings. Read more...

Logstash处理Nginx中文Post内容乱码

Logstash
本文章记录采集中有中文字符,出现乱码问题的处理. 解决 scripts/nginx_request_body.rb def filter(event) # 设置index日期 event.set('index_day', event.timestamp.time.localtime.strftime('%Y%m%d')) # 切割message message_array = event.get("message").split("||") event.set("host", message_array[1]) ... # request_body字段 request_body = message_array[13] if request_body. Read more...

Openresty开发采坑记录

本文章记录Openresty学习使用过程中碰到的坑. #1 打印日志 初学为了直观显示输出,习惯性使用ngx.say调试. 在一开发跳转需求功能的时候发现: ngx.say会覆盖ngx.req.set_uri(跳转功能)影响最终结果. #2 Redis连接Bad request 为了Redis连接池共用,将Redis连接存储为共享数据. 后续使用断断续续出现Bad request. 查官网后得知真相: 建议不要使用全局lua变量,并发请求可能会出现因资源竞争导致的请求失败. 传送门 Read more...

Vue采坑记录

vue
本文章记录Vue学习使用过程中碰到的坑. #1 router.options.routes addRouter无法动态渲染菜单问题. 原因: 根据Vue官网介绍,该路由信息,在创建后不得更改. 传送门 需求场景: 用户登录时根据权限动态渲染菜单,需要读取后添加路由. 解决方案: 遍历路由表,将路由Push到列表内. // routerList为路由列表 // routerObj为路由对象 for (let i in routerList) { routerObj. Read more...

尝试自己写一个Python缓存装饰器

python
本文记录尝试编写一个简单的缓存装饰器,以学习为目的,实际生产环境建议大家用标准库。 from hashlib import md5 from pickle import dump, load # 用pickle进行数据的读取、写入 def _dkL(f): with open(f,'rb') as file: return load(file) def _dkD(o,f): with open(f, 'wb') as file: return dump(o,file) def cache(ex_time=10, start=0, have_args=True, have_kw=True, cache_path="/tmp/pyCache"): # 判断缓存目录是否存在 if not path. Read more...

Django Rest Framework 分页功能与搜索功能

drf
本文章记录在drf框架中实现分页、搜索功能. 实践 分页器 分页器的实现官网介绍有两种方式: 配置文件配置 继承父类完成自定义分页器 分析分页器源码 自定义分页器主要是继承PageNumberPagination,改写get_paginated_response方法与paginate_queryset方法. > 其中get_paginated_response主要是编写分页器的返回结果. 需求示例: 前端采用iView组件中的分页器,该前端分页器主要接收总页数与当前页数.所以后端需要返回数据,并且返回一个总页数. class MyPagination(PageNumberPagination): # 指定每一页的个数,默认为配置文件里面的PAGE_SIZE page_size = 10 # 可以让前端指定每页个数,默认为空,这里指定page_size去指定显示个数 page_size_query_param = 'page_size' # 可以让前端指定页码数,默认就是page参数去接收 page_query_param = 'page' # 指定返回格式,根据需求返回一个总页数,数据存在results字典里返回 def get_paginated_response(self, data): from collections import OrderedDict return Response( OrderedDict([('count', self. Read more...
1 of 2 Next Page