python
文章平均质量分 61
编程黑洞zz
这个作者很懒,什么都没留下…
展开
-
django-prometheus使用及源码分析
在django服务运行过程中,希望可以对其获取promethues指标进行监控,这样可以实时知道其运行状态,当它运行异常时可以及时进行告警,并且帮助我们可以对其针对性进行优化。比如请求量过大是否要进行限流或者扩容,再或者发现接口过慢,可能是数据库访问太慢,出现了慢sql,需要及时进行优化等等。而本文主要是介绍使用来对django服务添加对prometheus指标的支持,它已经内置了部分的指标采集,包括请求、数据库和缓存等方面的指标。除了使用方法外,也会对其源码进行分析,看它是如何实现的。原创 2024-09-17 16:20:06 · 1105 阅读 · 0 评论 -
django-apschedule定时任务异常停止
在django项目中使用`django-apschedule`来实现定时任务,使用的是`BackgroundScheduler`调度类,该调度的实现是通过后台线程的方式执行定时任务。其中任务都是持久化到数据库中的。在项目的运行过程中,因为数据库的异常,导致定时任务线程异常终止,即使数据库后续恢复正常,但也不再继续执行。我多次尝试复现未果,在开启定时任务期间,手动将数据库连接断开,定时任务执行失败,然后再将数据库建立连接,定时任务竟然重新恢复了,这让我一时摸不着头脑。原创 2023-11-01 12:24:45 · 875 阅读 · 0 评论 -
django rest_framework 分页
本文主要介绍在drf框架中如何对查询的数据进行分页,在drf框架中有提供该基础功能的使用案例和文档,详情参考drf-pagination-官网文档框架本身提供了分类的模块,但在实际工作中并不适用,所以我们可以通过继承的方式对内置的分页模块中的部分属性进行覆盖,以符合自身业务。page_size:请求接口未指明时,默认使用该值来查询数据量max_page_size:这个是限制一页最大能展示的数量。page_size_query_param:前端请求分页数量的字段。原创 2023-03-28 08:00:00 · 182 阅读 · 0 评论 -
django后端服务、logstash和flink接入VictoriaMetrics指标监控
通过指标监控可以设置对应的告警,快速发现问题,并通过相应的指标定位问题。背景:使用的 VictoriaMetrics(简称 VM) 作为监控的解决方案,需要将 django 服务、logstash 和 flink 引擎接入进来,VM 可以实时的获取它们的指标存储并进行监控告警,以上的服务都是部署在 k8s 中的。原创 2023-02-27 18:58:30 · 678 阅读 · 0 评论 -
python中import原理
在 python 中引入 Module 是再常见不过了,那么当我们 import 时它做了什么事情呢?它是如何加载 Module 使用的呢?一般,Module 是一个后缀为.py的文件,其 module 名称一般是文件名称去除.py,我们可以通过__name__来查看 module 名称。demo.py 是需要被引入的 module,main.py 是入口程序,它们在同一级目录。demo如果 module 为入口文件,则__name__为__main__,这也是常见的写法由来。__main__包含了。原创 2023-02-21 11:24:50 · 553 阅读 · 0 评论 -
使用python实现单例模式的三种方式
在整个进程中,有且只有一个对象存在,在任何地点使用都是同一个对象,可以解决多线程资源竞争问题,也常用于配置信息。本文主要介绍使用python的三种实现单例模式的方式。原创 2022-12-22 08:00:00 · 1778 阅读 · 0 评论 -
ddt源码分析
ddt 是 python 的第三方库,主要是解决使用 unittest 来写单测时可以支持参数化的配置,这个库的使用方法可以参考我之前写的文章。本文主要是讲自己在学习 ddt 库时所获。ddt 库的使用方法是用装饰器来实现的,可以参考python装饰器使用方法。原创 2022-10-27 08:00:00 · 1340 阅读 · 0 评论 -
使用ddt实现unittest的参数化测试
本文介绍如何使用ddt库来完成unitest的参数化设置。ddt的github地址ddt的官方文档本文是介绍ddt的基本并常用的用法,如果想要深入使用可以参考官方文档。其实ddt有个缺点是不能针对某一个单测方法进行单独的执行,必须要运行整个Unittest class才行,这样在调试的过程中非常不方便。如果你看到本文其实我比较推荐你使用pytest来替代unittest使用,pytest中也有参数化的使用,并且可以单独的去运行每一个单测。原创 2022-10-26 08:00:00 · 1859 阅读 · 0 评论 -
python装饰器的使用方法
装饰器在 python 中使用的频率非常高,它可以在不改动原有函数的基础上对其进行增强功能。下面主要是介绍装饰器的各种用法,并理解其运行过程。装饰器的用法很多,封装成库,给其他人使用也非常的方便,我们需要理解它的运行过程,才能更好的使用它。原创 2022-10-25 08:00:00 · 5119 阅读 · 2 评论 -
python简单使用grpc
文件,创建User的rpc服务定义,该服务中包含AddUser和GetUser两个调用,并使用下面创建的对应的结构体作为请求体和响应体。然后,运行命令对proto文件进行编译,会根据上面的proto文件生成对应的python文件,你会发现在proto目录下创建了。我们创建proto_test.py文件,创建User对象,填充值,并将该对象序列化成字符串输出。下面是使用之前创建的protobuf和grpc文件来构建grpc服务端代码。然后我们再创建User对象将将上面的输出的序列化字符串反序列化进来。原创 2022-09-13 10:09:49 · 1412 阅读 · 0 评论 -
python 浅拷贝和深拷贝
浅拷贝和深拷贝浅拷贝重新分配一块内存,创建一个新的对象,里面的元素是原对象中子对象的引用。对应的函数copy.copy().# l2 是 l1 的浅拷贝l1 = [1, 2, 3]l2 = list(l1)l1 == l2output: Truel1 is l2output: False# s2 是 s1 的浅拷贝s1 = set([1, 2, 3])s2 = s...原创 2020-02-15 16:01:37 · 224 阅读 · 0 评论 -
django rest_framework jwt
简介本文介绍在 django rest_framework 使用jwt认证.jwt 不是 rest_framework自带的认证方式,需要通过第三方库djangorestframework-jwt结合使用相关链接官网jwt 认证流程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uJMfQCTS-1581043078335)(en-resource://d...原创 2020-02-07 10:39:27 · 492 阅读 · 1 评论 -
flask结合mongo使用
简介本文是flask中对mongo的操作. 使用Flask-MongoEngine集成了mongo的操作,使用的是类似于django中的orm操作。相关链接Flask-MongoEngine文档MongoEngine文档生活助手项目案例使用mongo的配置. flask将这个配置加载进来即可.MONGODB_SETTINGS = { "db": "lifeAssistant...原创 2020-01-02 17:41:21 · 1943 阅读 · 0 评论 -
使用python操作hdfs
文章目录简介相关链接安装介绍常用使用配置文件应用追加写入数据到hdfs中简介使用python对hdfs进行操作. 这里选择使用hdfs库。相关链接hdfs文档安装pip install hdfs介绍常用使用创建一个hdfs clienttxz-data0:50070是hdfs namenode的ip地址. 使用hadoop用户去操作client = InsecureCl...原创 2019-12-26 13:08:25 · 4667 阅读 · 0 评论 -
django model的序列化
网络传输数据现在流行的是json数据格式,所以非常需要将数据库查询的到对象数据序列化成json格式,然后返回给前端进行数据展示。下面讨论在django中如何更方便的将model 序列化。一个goods的modle如下。 class Goods(models.Model): name = models.CharField(max_length=100, verbose_name="商品...原创 2019-04-11 10:25:01 · 1820 阅读 · 0 评论 -
python 上下文管理器
什么是上下文管理器python中使用with来使用上下文管理器.在使用某个资源时,可以对该资源进行初始化和资源的清理两个操作,在这两个操作之间边成为上下文。经典open案例对文件操作时,需要打开文件及关闭文件。然后在这之间进行文件的操作。f = open("a.txt")f.write("hello world")f.close()使用上下文管理器打开文件后,得到文件描述符,在...原创 2019-09-03 18:47:51 · 149 阅读 · 0 评论 -
python 垃圾回收机制
垃圾回收机制引用计数每次对象被引用时,会被计数加1,当计数为0时,则回收该对象。注意: 循环引用的情况,引用计数不能解决.[外链图片转存失败(img-MEW3tgEP-1567564005486)(en-resource://database/8181:0)]标记-清除对所有活跃的对象进行标记,对非活跃对象进行回收。可以有效的解决循环引用的问题原理对象之间通过引用构建有向图,从ro...原创 2019-09-04 10:27:48 · 163 阅读 · 0 评论 -
python 元类编程
property动态属性通过使用property可以将方法像属性一样获取值。使用setter对方法进行赋值操作from datetime import datetime, dateclass Student: def __init__(self, name, birthday): self.name = name self.birthday = b...原创 2019-09-04 17:27:35 · 276 阅读 · 0 评论 -
django 压缩文件下载
简介需求:需要在请求时,将数据生成zip文件提供给用户下载。不想要在生成后再提供给用户下载解决:使用BytesIO在内存中写入数据,而不是落地到本地中。栗子from io import BytesIOimport zipfilefrom django.http import FileResponsedef view(): download_io = BytesIO...原创 2019-09-10 11:30:57 · 2177 阅读 · 0 评论 -
python 迭代器和生成器
迭代器与生成器迭代器和可迭代对象实现了__iter__的对象是可迭代对象.实现了__iter__和__next__的是迭代器.两者之间的关系: Python从可迭代的对象中获取迭代器可迭代对象的抽象基类是abc.Iterable迭代器的抽象基类是abc.Iterator如何实现迭代器?定义__iter__方法返回带有__next__方法的对象,__iter__可以简单的返回sel...原创 2019-09-12 16:50:33 · 149 阅读 · 0 评论 -
django rest_framework 自定义文档
简介django rest_framework 自动生成文档的功能,能够很好的给前端提供帮助,在文档中可以看到api的参数和其提供的功能信息,并且还能够在上面直接测试api接口。官网配置urls.pyfrom rest_framework.documentation import include_docs_urlsurlpatterns = [ ... url(r'^...原创 2019-09-23 19:22:52 · 937 阅读 · 0 评论 -
django rest_framework 异常
简介当程序中出现异常时,我们想要返回的是包含异常信息的json数据。返回正常的信息和异常信息的格式一致化。操作自定义json返回的格式libs/response.pyfrom rest_framework.response import Responseclass JsonResponse(Response): def __init__(self, data=None,...原创 2019-09-23 19:25:39 · 389 阅读 · 0 评论 -
python type 和 isinstance区别
type和isinstance的作用type 实例化该对象的class, 也就是该对象的类型.isinstance 该对象的类型,也可能是该类型的父类类型.栗子class A: pass class B(A): pass class C(B): pass c = C()>>> isinstance(c, A)o...原创 2019-09-03 18:43:46 · 231 阅读 · 0 评论 -
python 私有属性和受保护属性
什么是私有属性在类中定义的属性不提供给外部使用,在定义该属性时,属性名前加__代表该属性为私有属性。例子:x为公有属性,外部可是访问该值。 y为私有属性,外部不能访问该值.class A: def __init__(self, x, y): self.x = x self.__y = y >>> a = A(1...原创 2019-09-03 10:15:05 · 2862 阅读 · 0 评论 -
python 鸭子类型
什么是鸭子类型举了例子,一直鸟,它走起来像鸭子,叫声叫鸭子,样子像鸭子,那么我们就认为它就是鸭子。在静态语言多态中,通过继承相同类,表现出他们是一种类型,比如:唐老鸭和丑小鸭都继承于鸭子,所以都归为鸭子类型class Dock: pass class DonaldDuck(Dock): pass class UglyDuckling(Dock): ...原创 2019-09-02 18:46:52 · 269 阅读 · 0 评论 -
django rest-framework reverse用法
通常情况下,最好使用绝对的URI,例如:http://example.com/foobar,而不是相对的URI,例如:/foobar如果在代码中对uri进行硬编码非常的不方便,当该uri修改时,项目中所有的该uri都要被修改。使用reverse可以更好的去动态的得到绝对的URI.url.py下面代码使用了django的url和rest-framework路由from rest_fra...原创 2019-05-14 10:08:55 · 1401 阅读 · 0 评论 -
浏览器缓存图片
今天发现一个特奇葩的问题,每次访问新的二维码图片时,浏览器上显示的都是旧的二维码,浏览器做了多余的操作,在图片访问地址不变时,会将缓存中的图片显示出来,来提升访问速度,但是我们的不需要改操作。解决办法:在请求图片时,添加一个随机数,地址的改变,浏览器就不会使用缓存的图片了。localhost:5000/static/images/login.jpg?+随机数...原创 2019-04-28 17:28:52 · 1885 阅读 · 1 评论 -
django Filtering 使用
django-filter是单独的一个库,不属于djangorestframework中的,属于外部库引用进来使用。下面就来介绍下filter有三种filter方式:DjangoFilterBackendSearchFilterOrderingFilter准备工作首先需要安装django-filterpip install django-filter然后需要将django_...原创 2019-04-17 21:39:38 · 849 阅读 · 0 评论 -
django viewset 和 Router 配合使用时报的错
报错内容:‘basename’ argument not specified, and could not automatically determine the name from the viewset, as it does not have a ‘.queryset’ attribute.basename是Router.register()中的一个属性。如果没有设置basenam...原创 2019-04-17 21:37:29 · 1163 阅读 · 0 评论 -
Flask使用flask_socketio实现websocket
下面是案例,是我自己用来测试使用的,可以直接运行的。详细的使用请看官网websocket主要应用于客户端和服务端双向通信的。前端使用socket.io.min.js是node.js的一个websocket库,首先创建socket. emit是向后端发送消息, message是该条消息的名称,后面是发送消息的数据。on是注册接受消息的事件,获取后端传过来的数据. namespace是指一类的消...原创 2019-04-22 13:11:57 · 6528 阅读 · 3 评论 -
使用hue创建ozzie的pyspark action workflow
hue是一个Apache Hadoop ui系统,本篇文章介绍如何使用hue创建一个ozzie的pyspark action的workflow, 该workflow仅包含一个spark action。注意,本文使用的是python语言的pyspark。编写一个python操作spark的程序。demo.pyfrom pyspark.sql import SparkSessions...原创 2019-04-11 10:22:38 · 1549 阅读 · 0 评论 -
os.path.abspath() 和 os.path.realpath() 区别
相同点都能返回文件的绝对路径。>>> import os>>> os.path.realpath(__file__)f:\work\tmp\test.py>>> os.path.abspath(__file__) f:\work\tmp\test.py输出:f:\work\tmp\test.pyf:\work\tmp...原创 2019-03-30 21:58:55 · 5411 阅读 · 2 评论 -
dask环境搭建
0. 参考资料github教程,我也是看这里学的。git clone http://github.com/dask/dask-tutorialdask官网http://dask.pydata.org/en/latest/ 1. Dask是什么?Dask是一个python的并行计算的库。Dask对远远超过内存的数据集进行多核或分布式的并行计算运行。1.1 集合...原创 2018-08-22 18:33:20 · 2034 阅读 · 0 评论 -
django restframework choice 自定义输出数据
我有一个这样的需求,返回的数据json中返回的是id,但是我想要得到该id对应的name。id对应的namePlatformType = ( (0, '通用'), (1, '前装'), (2, '后装'), (3, '海外前装'), (4, '海外后装'), (5, '小系统'))class TrackS...原创 2019-05-07 19:44:24 · 1871 阅读 · 0 评论 -
pytest学习笔记
pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。pytest是可以兼容unittest脚本的,unittest测试用例可以通过pytest框架去运行。编写规则测试文件以test_开头(以_test结尾也可以)测试类以Test开头,并且不能带有 init 方法测试函数以test_开头断言使用基本的ass...原创 2019-05-10 15:08:59 · 1546 阅读 · 0 评论 -
django celery 结合使用
简介本文主要介绍django和celery结合使用的案例。celery 是一个异步任务的调度工具,可以完成一些异步任务和定时任务。本文使用djcelery来完成django和celery的结合使用。该案例在github中django_celery_demo流程任务发布者(Producer)将任务丢到消息队列(Broker)中,任务消费者(worker)从消息代理中获取任务执行,然后将保...原创 2019-08-22 10:24:09 · 1272 阅读 · 4 评论 -
tornado 上传文件
简介文章介绍的是使用tornado完成文件的上传功能该项目的github地址: tornado_learning.git栗子设置文件上传的路径代码: tornado_learning/settings.pyBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))settings = { "ME...原创 2019-08-20 17:00:18 · 803 阅读 · 0 评论 -
tornado 使用jwt完成用户异步认证
简介bcrypt 可以通过加盐的方式对密码进行加密,更加的安全可靠。该项目的github地址: tornado_learning.git优点md5加密,每个对应的明文密码,对应的是一样的加密的密文,比较容易的进行解密。而bcrypt每一次的明文密码得到的是不同的加密的密文,因为密文是通过随机的盐结合加密,所以更加安全。python 如何使用bcrypt 栗子 from bcrypt i...原创 2019-08-20 16:58:42 · 2101 阅读 · 2 评论 -
tornado 用户密码 bcrypt加密
简介bcrypt 可以通过加盐的方式对密码进行加密,更加的安全可靠。该项目的github地址: tornado_learning.git优点md5加密,每个对应的明文密码,对应的是一样的加密的密文,比较容易的进行解密。而bcrypt每一次的明文密码得到的是不同的加密的密文,因为密文是通过随机的盐结合加密,所以更加安全。python 如何使用bcrypt 栗子 from bcrypt i...原创 2019-08-20 16:58:12 · 1242 阅读 · 0 评论 -
tornado 结合wtforms使用表单操作
简介在获取请求时,需要将请求的参数进行验证。使用wtforms和tornado的结合,可以获取到请求的参数,并且对参数进行验证。该项目的github地址: tornado_learning.git例子创建student的form代码: apps/shchool/forms.pyfrom wtforms_tornado import Formfrom wtforms import ...原创 2019-08-20 16:57:40 · 826 阅读 · 0 评论