- 博客(159)
- 收藏
- 关注

原创 python 使用opencv 切割图片的白边(横切和竖切)
废话不多说直接上码,分享使人进步,奥利给:from PIL import Imagefrom itertools import groupbyimport cv2import datetimeimport os# from core.rabbitmq import MessageQueueTHRESHOLD_VALUE = 230 # 二值化时的阈值PRETREATMENT_FILE = 'hq' # 横切时临时保存的文件夹W = 540 # 最小宽度H = 960 #
2020-08-20 09:21:01
3900
2

原创 django 基于 channels 实现实时聊天和后台主动推送
源码地址:https://download.youkuaiyun.com/download/qq_37049050/114533950.环境python>3.6django==2.21.安装包pip install redispip install -U channelspip install channels_redis2.创建项目3.socket_chann...
2019-07-30 13:44:51
4495
8

原创 python futures 练习
闲来无事,看看python futures 多线程这块,确实方便 牛皮from concurrent.futures import ThreadPoolExecutorimport requestsimport randomimport pytesseractfrom PIL import Imageurl = ["http://www.epicc.com.cn/wap/Cre
2018-04-28 16:23:52
359

原创 python requests 请求 https SSL 报错
连接国企vpn时的一次掉坑经历跟领导俩人搞了一下午,头都快炸了,不过找到了解决办法。首先是https请求,通过代理访问,但一直报错,就像这样:(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_record', 'wrong version number')],)",),))查了好多博客和国外网站,最终在一个犄角...
2017-08-03 20:15:33
24286
4
转载 Django集成CAS
CAS概述CAS 全称集中式认证服务(Central Authentication Service),是实现单点登录(SSO)的一种手段。对于本文用户可感知的层面,认证过程如下:前端访问后端登录接口 后端返回重定向到 CAS 服务器的登录页面,并携带当前用户访问的网页链接 用户登录,浏览器发送请求到 CAS 服务器进行认证 CAS 认证通过,将本次登录保存到会话,返回回调地址给后端 后端返回重定向请求给前端 前端重定向到跳转登录前的页面 中间涉及到的 TGT 处理逻辑已经由开源 CA
2022-04-01 10:31:53
958
原创 将django的详细报错信息通过webhook发送
import traceback, sysdef handler(exc, context): response = exception_handler(exc, context) if not response and not settings.DEBUG: error_info = traceback.format_exception(*sys.exc_info()) send_feishu.delay(''.join(error_info), '.
2021-10-09 17:06:08
374
转载 Gunicorn 配置
TL;DR,对于受 CPU 限制的应用程序,增加工作人员和/或内核。对于 I/O 有界应用程序,请使用“伪线程”。Gunicorn是一个 Python WSGI HTTP 服务器,它通常位于反向代理(例如,Nginx)或负载均衡器(例如,AWS ELB)和 Web 应用程序(例如 Django 或 Flask)之间。Gunicorn 架构Gunicorn 实现了一个 UNIX 预分叉网络服务器。太好了,什么意思?Gunicorn 启动一个单独的主进程,它被.
2021-09-13 11:44:30
1542
原创 ant vue 笔记
<template> <div class="login"> <a-form :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }" @submit="handleSubmit"> <a-form-item label="name"> <!-- 直接写检验规则 --> <a-input v-decorat.
2021-09-08 17:51:57
284
原创 Python如何简介高效的判断一个数在什么区间范围内?
from bisect import bisect_lefta = [0, 3, 7, 29, 30]print(bisect_left(a, 44))
2021-09-01 18:14:10
3604
原创 django中 celery 如何优雅重启
因为项目中有延时任务,如果使用kill -9 直接KILL进程,会导致现有任务无法在下次启动时被加载,这里使用官方推荐的信号机制,这时celery的主线程会将待完成的任务记录在 broker中(博主用的是redis,而且没有改任何配置),这时会生成一个叫 celery的key,里面记录了未完成的任务,在celery下次启动时会去重新加载这些任务。优雅的重启celery:import osf = '/var/run/celery/celery.pid'if os.path.exists(f):
2021-09-01 10:45:56
2110
1
转载 django搬运工
在任何类型的ORM中,聚合(aggregation)都是造成混乱的根源,而Django也是如此。该文档提供了各种示例,演示了如何使用Django的ORM对数据进行分组(group)和聚合(aggregation),但是我决定从另一个角度进行研究。在本文中,我将QuerySet和SQL并排放置。如果您最喜欢SQL语言,那么这是适合您的Django GROUP BY速查表。如何在Django中分组为了演示不同的GROUP BY查询,我将使用Django内置django.contrib.auth应
2021-08-30 17:04:06
82
原创 python 处理有orientation的图片
# The EXIF tag that holds orientation data.EXIF_ORIENTATION_TAG = 274# Obviously the only ones to process are 3, 6 and 8.# All are documented here for thoroughness.ORIENTATIONS = { 1: ("Normal", 0), 2: ("Mirrored left-to-right", 0), 3: (".
2021-08-16 18:37:21
851
3
原创 django 拼接多个 queryset 并按顺序排列
问:a = aa.objects.filter(shifttype=upemptype,attdate=upattdate,tagtime__gte=20).values('attdate','shifttype','tagtime').annotate(attsum=Sum('atten'),postsum=Sum('post')).order_by('attdate','shifttype','tagtime')b= aa.objects.filter(shifttype=upemptyp
2021-07-30 19:16:33
1286
1
原创 谷歌浏览器输入栏中的下载按钮是个什么鬼
本文的标题是为了给那些跟我一样,不知道该怎么搜索关键字的同学准备的;无头苍蝇般的在网上找了好久,终于知道了它的学名PWA,OK有学名就知道该怎么搞,附上Vue项目的配置https://www.jianshu.com/p/7845a13a67d7加油吧...
2021-06-18 11:20:18
830
2
原创 python 小程序支付代码
class Pay(): def __init__(self): # =======【基本信息设置】===================================== self.appid = APPID self.mchid = MCHID self.notify_url = NOTIFY_URL self.serial_no = SERIAL_NO def get_head(self, metho.
2021-06-09 11:14:51
430
1
原创 python使用rabbitmq worker异常处理
在使用rabbitmq时,如果服务端重启或者异常,worker就会抛出异常而导致挂掉,这里写了一个简单的重试机制def auto_restart(max_retry=None, sleep_time=5): def wrapper(func): def _inner(*args, **kwargs): retry = 0 condition = retry < max_retry if max_retry else True
2021-05-19 12:10:59
345
原创 gitlab CI CD
CI/CD 部署gitlab runnerUbuntu安装 runnercurl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash export GITLAB_RUNNER_DISABLE_SKEL=true; sudo -E apt-get install gitlab-runner Centos 安装 runner..
2021-03-26 20:14:59
295
转载 docker占用磁盘太大 怎么办
问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。 解决方法 2.1 找出Docker容器日志 在linux上,容器日志一般存放在/var/lib/docker/containers/container_id/下面,查看各个日志文件大小的脚本docker_log_size.sh,内容如下: #!/bin/sh echo "======== docker containers..
2021-03-17 14:16:39
2470
原创 基于docker搭建elasticsearch环境及配置ik分词
1、docker版本本文中使用的docker版本是[root@1 ~]# docker -vDocker version 20.10.1, build 831ebea2、下载es镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:6.2.23、启动容器docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-..
2021-01-22 11:31:27
383
原创 Django 日志随笔
1、记录每个接口sql执行时间编写自定义中间件,可以将输出结果保存进日志,方便后续统计操作class SQLMiddleware(MiddlewareMixin): def process_response(self, request, response): for sql in connection.queries: print(sql) # {'sql': 'SET SESSION TRANSACTION ISOLATI
2020-12-31 10:05:26
167
原创 搭建Sentry异常捕获平台
简介Sentry是一个实时事件的日志聚合平台,可以实时检测程序异常错误并发出报警通知,帮助开发人员快速定位问题。如果处理快速,在用户反馈前就可以将问题修复,缩小了影响范围,避免同样的错误影响更多用户。环境搭建sentry 依赖的东西比较多,有 postgres、redis、memcached、celery、exim4 ,建议使用 docker 安装和管理。安装 docker参考 https://www.runoob.com/docker/centos-docker-install.html .
2020-08-17 17:30:54
1920
转载 python 多进程 logging:ConcurrentLogHandler 配置
python的logging模块RotatingFileHandler仅仅是线程安全的,如果多进程多线程使用,推荐 ConcurrentLogHandler. 安装之:# Using ConcurrentLogHandler:# wget https://pypi.python.org/packages/fd/e5/0dc4f256bcc6484d454006b02f33263b20f762a433741b29d53875e0d763/ConcurrentLogHandler-0.9.1.tar.
2020-06-15 10:55:43
1842
转载 mysql 日期操作
--今天select * from 表名 where to_days(时间字段名) = to_days(now());--昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1--本周SELECT * FROM 表名 WHERE YEARWEEK( date_format( 时间字段名,'%...
2020-05-08 11:13:56
261
转载 如何0元搭建一个共享收费Wifi?
share.jpg家里的宽带平时就是下班或周末用用,闲着也是闲着,就想能有偿分享出来补贴一点宽带费用,家靠路边,楼下有底商,人流量还可以,应该可以收点费用上来。网上搜索一番,多数都是购买特定的收费路由器产品,费用大概500元左右,这个对于我这种试一试的用户成本太高。后来无意搜索到一家叫“尔雅云”的可以提供软件的方式把二手路由器变为收费wifi,正好手里有路由器就试了一把,感觉不错,把经验分...
2020-03-30 19:27:14
11166
4
转载 Python __subclasses__() 函数获取类的所有子类
class A(object): passclass B(A): passclass C(A): passfor sc in A.__subclasses__(): print(sc.__name__)BC
2019-12-30 11:43:04
4395
原创 python3 在图片上添加文字
import cv2from PIL import ImageFont, ImageDraw, Imageimport numpy as npbk_img = cv2.imread("share.png")# 设置需要显示的字体fontpath = "/Users/ps/projects/hymm/egret/trade/simsun.ttc"font = ImageFont.tr...
2019-12-13 11:15:53
1278
转载 python操作阿里云oss
对象存储 对象存储的概念我就不做太多概述了,详情可以参考阿里云 sdk python的sdk不仅提供对文件的处理,包括其它内容比如图片也有很好的支持,可以实现对图片在线缩放、水印等一系列操作,详情可参考官方图片处理文档 文件处理代码# -*- coding: utf-8 -*import oss2import osaccess_key_id = os.getenv('OSS...
2019-10-22 11:16:20
1479
转载 nginx反向代理配置去除前缀
使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法:方法一:加"/"server { listen 8000; server_name abc.com; access_log "pipe:...
2019-10-21 17:46:15
399
原创 身份证前6位对应的省市区县
{ "110000": "北京市", "110100": "北京市市辖区", "110101": "北京市东城区", "110102": "北京市西城区", "110103": "北京市崇文区", "110104": "北京市宣武区", "110105": "北京市朝阳区", "110106": "北京市丰台区", "110107": "北京市石景山区", "110108":...
2019-10-18 17:12:21
8063
原创 出现频率最高的元素
def most_frequent(list): return max(set(list), key = list.count) list = [1,2,1,2,3,2,1,4,2] most_frequent(list)
2019-10-18 15:12:47
379
原创 python 获取某个模块中的所有类
铁棒磨针第一天import inspect# 找出模块里所有的类名def get_classes(arg): classes = [] clsmembers = inspect.getmembers(arg, inspect.isclass) for (name, _) in clsmembers: classes.append(name) ...
2019-09-27 10:22:56
8444
2
转载 一个简单有效的 Git 工作流
一个简单有效的 Git 工作流Git 使用规范几个必要的分支分支管理模式开发阶段测试阶段上线阶段Commit描述Git 使用规范为了更好的多人协作开发,提高开发、测试的效率,总结出以下简单实用的 git 工作流程。几个必要的分支master 为可发布分支,受保护,仅可以merge,不能push,对应生产环境部署的代码;dev 为开发分支,最初是从 master 分支创建的,用于开发人员日...
2019-09-16 15:51:24
219
原创 django+nginx+gunicorn 出现 414 request-uri too large
1、nginx nginx.conf 文件的修改client_header_buffer_size 512k;large_client_header_buffers 4 512k;具体的大小根据自己的uri长度调整即可。2、gunicorn 配置我这里用的是配置文件,在文件中添加下面的参数来设置请求头大小limit_request_field_size=30000...
2019-08-12 11:21:44
856
原创 python 对身份证的一些操作
根据身份证号获取生日、生肖、星座、性别。 def user_info(id_card): # 根据身份证号获取一些基本信息 year = id_card[6:10] month = id_card[10:12] day = id_card[12:14] sex = '男' if int(id_card[-...
2019-07-25 15:38:28
2380
转载 django celery 实现任务队列和定时任务
一、前言 Celery是一个基于python开发的分布式任务队列,如果不了解请阅读笔者上一篇博文Celery入门与进阶,而做python WEB开发最为流行的框架莫属Django,但是Django的请求处理过程都是同步的无法实现异步任务,若要实现异步任务处理需要通过其他方式(前端的一般解决方案是ajax操作),而后台Celery就是不错的选择。倘若一个用户在执行某些操作需要等待很久才返回,这...
2019-07-18 10:21:51
1962
2
原创 记一次抓取app
mitmproxy + appium主要解决的问题是登录后获取登录状态并保存。appium 的安装和配置环境很繁琐,但按照教程一步一步来 还是可以搭建好,这里就不多说:参考https://www.jianshu.com/p/7df814557c96安装成功后,开始安装mitmproxy 参考 :https://www.jianshu.com/p/0eb46f21fee9博主...
2019-06-26 18:22:34
172
原创 es 实践 爬坑 笔记
{ "query": { "bool": { "must": [ { "range": { "passtime": { "gt": "1490976000000", ...
2019-06-06 17:35:29
209
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人