自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (5)
  • 收藏
  • 关注

原创 使用python基于zmq的DEALER-ROUTER模式实现分布式消息分发的demo

zmq的DEALER套接字是对REQ的一层包装,本质就是在发送数据前发送一段bytes数据(所以一个bytes数据就意味着一个连接),而ROUTER就是对REP的包装,是在接收数据前先接收bytes数据。REQ-REP可以看作bytes数据为空的DEALER-ROUTER模式,但是DEALER和ROUTER又不像REQ和REP一样严格遵循send-recv-send-recv.....的模式。总体分为client-broker-worker三个部分,简化如下图所示。broker的伪码流程..

2020-08-05 16:56:33 2550

原创 celery的timezone设置对收集任务结果result_backend无效

问题描述:python版本3.8,celery版本4.3.0,在使用redis收集任务结果时,发现redis中存储的任务结果和实际运行的时间对不上。代码如下:from celery import Celeryapp = Celery("elTask", broker="redis://:@192.168.10.21:6379/15", backend='celery.backends.redis.RedisBackend', changes={"redis_host"

2020-07-10 18:53:33 1379

原创 使用grpc遇到greenlet.error: cannot switch to a different thread解决方法

发生问题场景:grpc服务端配置有一个使用eventlet.db_pool.DatabaseConnector创建的数据库连接池还有其他基本的条件语句,在使用客户端调用服务端的函数执行数据库操作时,几乎66%的概率在服务端发生阻塞,首先数据库是没问题的。重启客户端再重新调用相同的函数,服务端会报 greenlet.error: cannot switch to a different thread 的错误。尝试解决方法:官方:在grpc的github的issues里找到这个问题https://g

2020-07-09 16:28:59 4610

原创 celery动态设置定时任务实践

首先celery是一种异步任务队列,如果还不熟悉这个开源软件的请先看看官方文档,快速入门。这里讲的动态设置定时任务的方法不使用数据库保存定时任务的信息,所以是项目重启后定时任务配置就会丢失,如果想保存成永久配置,可以考虑保存到数据库、redis或者使用pickle、json保存成文件,在项目启动时自动载入。方法原理介绍先来看一下celery的beat运行过程。上图是beat的主...

2020-04-16 19:09:10 3550 8

原创 Dockerfile和supervisor部署项目配置文件模板

Dockerfile模板FROM python:latestWORKDIR /root/RUN mkdir /etc/supervisor # 创建存放supervisor配置文件的文件夹RUN mkdir -p /root/projects/logs/gunicorn/ # 创建gunicorn日志文件夹 要和supervisor中gunicorn日志文件路径一致RUN mk...

2020-04-09 16:18:13 1158

原创 使用Dockerfile构建supervisor容器部署项目,CMD ["supervisord","-c","/etc/supervisord.conf"]执行失败

问题描述:在编写Dockerfile创建supervisor容器时,最后一条启动supervisor的命令不起作用 -> CMD ["supervisord","-c","/etc/supervisord.conf"],但是进到容器内部执行supervisord -c/etc/supervisord.conf可以成功运行。先贴出来Dockerfile文件代码FROM python...

2020-04-09 16:02:56 1901 1

原创 Go 跟随源码分析http包下HTTP服务器请求过程

go语言可以用几行代码搭建一个http服务器,例如:package mainimport ( "fmt" "net/http")func SayHello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World!")}func main() { http.HandleFunc("/",...

2020-03-26 23:30:17 232

原创 Go mysql返回map类型数据优化

这个版本是根据上个版本修改"database/sql"源码优化后得到的,暂时还是只支持返回map[string]string结果。本次修改没有修改"database/sql"下的源码,是对底层查询结果的一层包装。下面是主要代码,使用方法参考测试代码。package dbMapimport ( . "database/sql" "fmt" "github.com/go-sql...

2020-03-24 14:01:42 1687

原创 python 开放搜索opensearch示例

这代码是自己根据官网的demo结合业务需求修改之后的版本具体api请参考官方文档实现,只需要根据api设置参数即可# -- coding: utf-8 --import timeimport randomimport hmacimport base64import copyimport urllib.parseimport requestsimport logging...

2020-03-03 18:16:11 1373 2

原创 Python pymysql调用存储过程

使用pymysql调用存储过程import pymysqldb = pymysql.connect(host='rm-******.mysql.rds.aliyuncs.com', port=3306, user='root', password='******', db='***')cursor = db.cursor(...

2020-02-24 12:30:36 4895

原创 Go mysql返回map类型数据

目录convert.goctxutil.goDB.gosql.go测试代码测试结果说明:由于经常使用sql查询语句,习惯了python查询之后直接返回字典的形式,感觉go的不太好用,所以根据原本"database/sql"包重写了Scan方法,更改了传参方式,并添加了初始化函数init()。只修改了传参方式和返回值,其他没有修改。在使用的时候需要根据自己使用的数据库选...

2020-01-10 18:55:39 2374

原创 Python 调用阿里网关

目前因为只用到get/post请求,所以只试验了这两个方式。对headers的签名方法是按照请求签名说明文档编写的,文档更新时间为2017-09-19 17:54:48import osimport timeimport uuidimport hmacimport base64import requestsIS_DEV=Falseif IS_DEV: stage ...

2020-01-03 16:55:07 628 1

原创 数据库、redis连接池

import contextlibimport redisimport pymysqlIS_DEV = Falseif IS_DEV: # 正式版redis REDIS = { 'host': '**********.redis.rds.aliyuncs.com', 'port': 6379, 'db': 11, ...

2019-12-27 15:30:04 285

原创 python 从数据库向Elasticsearch导入数据脚本

import pymysqlfrom elasticsearch import Elasticsearchhosts = ( {"host": "192.168.188.130", "port": 9200},)es = Elasticsearch(hosts=hosts, sniff_on_start=True, ...

2019-12-13 17:26:26 420

原创 Centos7安装Elasticsearch

在/etc/yum.repos.d/目录下创建elasticsearch.repo文件,并写入一下内容[elasticsearch-7.x]name=Elasticsearch repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https:/...

2019-12-11 11:00:49 192

原创 docker笔记

docker中文文档入口搜索镜像命令docker search <name>拉取镜像docker pull <name>查看本地所有镜像docker images创建一个容器docker run -d -p 【宿主机端口】:【容器端口】--name 【容器名】 【镜像IMAGE ID或镜像名:标签】 【在容器中执行的命令】# doc...

2019-11-13 18:14:22 123

原创 supervisor笔记

安装pip install supervisor建立软连接ln -s /usr/local/python3/bin/supervisord /usr/bin/supervisordln -s /usr/local/python3/bin/supervisorctl /usr/bin/supervisorctl创建配置文件的文件夹mkdir /etc/supervis...

2019-11-13 15:55:40 220

原创 PyMySQL和eventlet实现数据库连接池

eventlet的db_pool文档地址:http://eventlet.net/doc/modules/db_pool.html需要先安装pymysql 0.9.3模块和eventlet 0.25.1模块。具体代码如下:import pymysqlfrom eventlet.db_pool import RawConnectionPool, ConnectionPool, Datab...

2019-11-08 16:29:02 313

原创 gRPC-Python3

Python 快速入门gRPC文档gRPC官方中文文档官方git仓库:https://github.com/grpc/grpc.git安装gRPC环境# GRPC Python setup requirementscoverage>=4.0cython>=0.29.8enum34>=1.0.4protobuf>=3.5.0.post1six&gt...

2019-11-06 16:38:22 571

原创 Python3 pandas入门

pandas的数据结构介绍pandas有两个主要数据结构:Series和DataFrame。SeriesSeries是一种类似一维数组的对象,由一组数据和与之相关的索引组成。创建Series第一种方式,直接传入一个列表或元组等序列数据,如果没有指定索引,会自动创建一个从0到N-1的整数型索引。In [3]: s1=pd.Series([1,2,3]) ...

2019-09-27 16:37:19 374

原创 Python3 NumPy基础:数组和矢量计算

目录NumPy介绍:部分功能如下:ndarray:创建ndarray:ndarray的数据类类型:数组和标量之间的运算:数组之间的运算:数组和标量之间的运算:基本的索引和切片:布尔型索引:花式索引:数组转置和轴对换:通用函数:快速的元素级数组函数:一元函数:二元函数:利用数组进行数据处理:将条件逻辑表述为数组运算:数学和...

2019-09-20 11:22:56 495

原创 重写django的mysql驱动实现原生sql语句查询返回字典类型数据

在使用django的时候,有些需求需要特别高的查询效率,所以需要使用原生的sql语句查询,但是查询结果一般是一个元组嵌套元组。为了处理方便,需要从数据库查询后直接返回字典类型的数据。这里使用的方法是继承django.db.backends.mysql驱动首先在django项目下创建一个mysql文件夹,然后在这个文件夹下创建base.py。base.pyfrom django.d...

2019-09-18 15:39:36 497 1

原创 Redis 配置 主从、集群

参数名 默认值 解释 bind 127.0.0.1 绑定ip地址 port 6379 绑定端口 dademonize no yes:打开守护进程 no:关闭守护进程 pidfile /var/run/redis/redis-server.pid pid文件路径 logfile /var/log/redis/re...

2019-09-10 16:14:24 223

原创 rest_framework学习(七)频率组件

频率组件频率组件是为了控制用户访问的频率、节流。rest_framework运行的权限组件的时间和认证组件相同,在rest_framework学习(四)认证组件已经提到了,不再赘述。当执行了self.check_throttles(request)方法,即执行该视图函数所有的权限组件 def check_throttles(self, request): ...

2019-07-31 18:17:32 117

原创 python 实现Twitter的分布式雪花算法

import socketimport timeclass IdWorker(object): # 获取主机名 HOSTNAME = socket.gethostname() # 获取IP IP = socket.gethostbyname(HOSTNAME) # 序列号(12位 0-4095) SERIAL_NUMBER = 0 ...

2019-07-31 16:15:14 347

原创 rest_framework学习(六)分页器

分页器如果使用rest_framework的分页器,视图类需要继承rest_framework.generics.GenericAPIView或者它的子类。使用分页器需要在视图类中配置pagination_class,然后调用self.paginate_queryset(queryset)就能得到分页后的数据集合。 def paginate_queryset(self, que...

2019-07-29 19:26:52 412

原创 rest_framework学习(五)权限组件

权限组件权限组件的目的是为了控制用户权限,实现不同权限访问不同资源rest_framework运行的权限组件的时间和认证组件相同上一篇博客rest_framework学习(四)认证组件已经提到了,不再赘述。当执行了self.check_permissions(request)方法,即执行该视图函数所有的权限组件 def check_permissions(self, ...

2019-07-29 17:11:00 141

原创 requests库

安装pip install requests请求方式requests.get(url)requests.post(url)requests.put(url)requests.delete(url)requests.head(url)requests.options(url)Session.request参数method: 请求方式 如:get,post,pu...

2019-07-27 15:54:45 1096

原创 使用Django框架遇到RuntimeError: populate() isn't reentrant错误

在执行数据库迁移的时候报出错误RuntimeError: populate() isn't reentrant,之前也出过这个错误,但是忘记记录了,这次又出现了。百度搜好好多,都没解决我的问题,这里做个踩坑记录。背景:项目有多个app,现在新需求增加了一个app,并编写了该app的utils文件在执行python manage.py makemigrations后报出如下异常Trac...

2019-07-24 11:52:06 13745

原创 使用flask-sqlalchemy时遇到This result object does not return rows. It has been closed automatically.的错误提示

这个错误信息出现时的环境:flask框架,mysql数据库。错误语句:current_app.db.session.execute(sql['update_circle_by_id'],params=circle_dict,bind=current_app.db.get_engine(current_app,bind='qcard')).fetchall()SQL语句:'u...

2019-07-17 09:33:10 7584 2

原创 rest_framework学习(四)认证组件

认证组件rest_framework的认证组件是为了判断用户有没有合法身份,一般认为没有登录或者没有授权即为不合法。rest_framework在什么时候运行认证组件说到rest_framework的认证组件,就要说到Django的CBV了。rest_framework模块的APIView类重写了CBV中的dispatch方法。 def dispatch(self, re...

2019-07-08 14:00:20 212

原创 rest_framework学习(三)视图函数的介绍

视图函数方式一urls.pyfrom django.urls import path, re_pathurlpatterns = [ path('books/', BooksView.as_view(), name='Books'), re_path('^books/(?P<pk>\d+)/$', BooksDetailView.as_view(), ...

2019-07-03 16:41:46 198

原创 rest_framework学习(二)序列化类的使用

序列化方式方式一from rest_framework.views import APIViewfrom django.shortcuts import render, HttpResponseimport jsonclass PublishView(APIView): def get(self, request): publish_list = list(...

2019-07-02 23:02:50 356

原创 在数据库有数据使用django的filter查询数据,查询结果有时有数据有时没数据的情况及解决办法

在使用restframework时,出现了查询结果为空的情况,但是数据库和查询条件都正确。具体代码如下,主要逻辑是判断first参数的值是不是‘true’,如果是则查询第一种messages (未读的messages),如果不是则查询第二种messages(5s间隔内的messages) ,最后使用序列化组件序列化messages。 def list(self, request...

2019-06-25 20:26:46 4632

原创 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3

使用pymysql作为django连接MySQL的模块时,报出了django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.的错误。数据库配置信息DATABASES = { 'default': { 'ENGINE': 'd...

2019-06-19 20:11:10 162

原创 rest_framework学习(一)resful规范介绍及Django的CBV介绍

一、什么是resful规范resful是一种规范,它是一种面向资源编程的规范,操作只是一种请求方式。二、规范内容1.API与用户的通信协议,总是使用HTTPs协议:https比http安全2.域名https://api.example.com 尽量将API部署在专用域名(会存在跨域问题)https://example.org/api/ API很简单例如写一个查询所有图书的a...

2019-05-20 16:40:49 455

原创 django rest_framework 错误信息 AssertionError: When a serializer is passed a `data` keyword

今天在学习django 的rest_framework规范时,遇到了AssertionError: When a serializer is passed a `data` keyword argument you must call `.is_valid()` before attempting to access the serialized `.data` representation. ...

2019-05-19 17:26:55 2626

原创 django的url路由分发

Django框架的路由分发可以使用include分发到各个app如from django.urls import path, includeurlpatterns = [ path('admin/', admin.site.urls), # 分发到app01下的urls.py中 由app01.urls继续分发到视图函数 # app01.urls.py要设置app...

2019-05-17 01:46:14 310

原创 cors跨域请求

前端使用正常的ajax请求,请求url填写需要跨域访问的url服务端在视图函数中对response设置Access-Control-Allow-Origin字段例如def service(request): info={"price":200} response=HttpResponse(json.dumps(info)) # 告诉浏览器http://127...

2019-05-17 01:32:50 228

原创 基于jquery的jsonp方式跨域请求示例

使用jQuery的ajax请求实现跨域操作参数和方法示例: $.ajax({ // 请求的url url:"http://127.0.0.1:8008/service/", // 请求方式只能是get type:"get", //声明返回数据是jsonp格式的 “functionName("data")” dataType:"jsonp",...

2019-05-17 01:16:46 199

基于django的RBAC权限控制模块

这个是一个权限控制模块,使用python3写的,可以导入(permission)直接使用。写了一个中间件实现权限控制,可以在后台分配权限。具体使用方式看文件里的readme.md。

2019-07-05

简单的博客网站

这个是学习django时自己写来练手的小项目,python==3.6,django==1.11.9,数据库使用的是mysql,在OneBlog/settings.py下可以修改数据库配置 项目部署: 先在数据库创建名字叫myblog的数据库 然后在有manage.py的文件夹下执行 python manage.py makemigrations python manage.py migrate 进行数据库文件迁移 最后创建超级管理员python manage.py createsuperuser 按照提示输入用户名、邮箱、密码(密码大于八位数字字母符号都要有) 运行项目python manage.py runserver 管理员页面地址 http://127.0.0.1:8000/admin/

2018-11-29

英雄飞机大战小游戏

这个游戏是在实训过程中写的小游戏,使用的是java语言。使用鼠标控制角色的移动,游戏中会出现小敌机、Boss机、爱心。爱心被子弹碰到会增加子弹量,被角色碰到会加生命值。jdk1.8

2018-11-13

吃热狗小游戏

这个小游戏是用java做的,使用到了java的Frame绘图工具,用鼠标可以控制角色移动,鼠标移入移出控制游戏暂停,空格键也可以控制游戏暂停,左右方向键也可以控制小人移动,回车键或鼠标点击画面可以开始游戏。基于JDK1.8

2018-11-13

基于django的个人博客

运行环境pyhton3+django==1.10 运行命令:python manage.py runserver 访问前台:http://127.0.0.1:8000/blog 访问后台:http://127.0.0.1:8000/admin 账户密码:admin+password123 仅提供个人学习使用

2018-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除