- 博客(35)
- 收藏
- 关注
原创 sanic多进程启动代码中禁用耗时多的同步代码
结论:如果代码用有严重耗时的代码,他会堵塞住这四个worker,下四个请求就请求不过来,所以代码中最好也用async/await去兼容异步web框架。结论:因为最新版的flask是默认多线程启动, 每个请求有耗时他都不会堵塞下一个请求,瓶颈就是框架性能以及服务器性能。注意:我们测试的是堵塞,所以用python直接启动flask不影响这个结论。启动用4个worker。
2023-06-21 18:13:38 361
原创 tortoise-orm 分页码(python)
python web框架中的orm 分页, 思想来源于flask_sqlalchemy中的paginate
2022-07-13 12:01:25 1728
原创 redis队列实现队列抢资源问题
需求缘由抢资源是为了解决高并发问题。 我为什么选择用redis队列, 因为这样可以直接在内存上筛选完了超过的那部分人,涉及不到数据库的查询, 当然如果有取消的然后放出名额,就需要你自己对这个list进行删除取消的那个人的用户idfrom redis import StrictRedisfrom retry import retrysort_manager = StrictRedis(host="127.0.0.1", port=6379, db=1, password="",
2022-02-12 17:39:28 500
原创 协程写入excel
需求是生成带图片的excel, 由于前端是用源生js写的,无法写多个sheetname,参考了import base64import mathimport osimport shutilimport threadpoolimport asynciofrom io import BytesIOfrom PIL import Imageimport xlsxwriter# 存一列中的最大值,最后刷一下COLUMN_DICT = {}async def do_work_one(st
2022-01-11 17:32:58 307
原创 redis实现排行榜,解决同分问题
redis排行榜需求如果一个需求是类似王者荣耀的巅峰赛排行榜, 同分的情况下我们如果想让先到同分的那一个排前面怎么办.解决方案我是将获取第二年的一月的时间戳1000000, 然后-去当前时间戳1000000给同分加上小数, 这样就解决了同分的问题上代码:import mathimport timefrom redis import StrictRedisfrom retry import retrysort_manager = StrictRedis(host="127.0.0.1"
2022-01-08 17:27:26 1492 2
原创 bs64+hashlib加盐加密
import base64import hashlibimport pyDesdef getMd5EncryptEncode(string): keye = 'hi%$so99' # MD5 keyb = '12up76^&' # IvParameterSpec s = string.encode('utf-8') md = hashlib.md5() md.update(keye.encode('utf-8')) desKeySpec
2021-06-13 15:47:50 396
原创 cnocr+opencv解决字母闪动验证码
验证码如下首先获取每一帧的图片,保存好,拿到每一帧的图片就进行切每一个字母,图片二值化,最后通过cnocr获取每一个字母,然后根据位置重新整合验证码(get_code)import sysimport osimport cv2import numpy as npfrom cnocr import CnOcrfrom PIL import Imageocr = CnOcr()# 获取每一张png,这个有四个字母即四张def image_process(gif_path, save
2021-06-12 23:23:38 776 3
原创 paddleOCR初体验
paddleOCR地址:https://github.com/PaddlePaddle/PaddleHub1.然后你就在终端安装paddleOCR的依赖packagepip install paddlepaddle==2.0.0rc1 -i https://mirror.baidu.com/pypi/simple2.去第三方网站下载依赖,手动install package https://www.lfd.uci.edu/~gohlke/pythonlibs/安装下图的packagepip
2021-06-12 23:07:08 199
原创 thrift+python+electron-vue
thrift环境配置(node.js的版本一定要一样)下载node.js(node-v10.16.0-x64)下载electronnpm install electron -g下载vuenpm install @vue/cli -g下载thriftnpm install thrift -g开始electron -vue项目利用electron-vue创建一个名为test的项目vue init simulatedgreg/electron-vue test在test文件夹下cmd输入:
2021-05-23 18:49:01 631
转载 2021-03-30
def FindPic(self,target=‘target.png’, template=‘temlate.png’):target_rgb = cv2.imread(target)target_gray = cv2.cvtColor(target_rgb, cv2.COLOR_RGB2GRAY)template_rgb = cv2.imread(template, 0)res = cv2.matchTemplate(target_gray, template_rgb, cv2.TM_CCOEF
2021-03-30 14:30:12 72
原创 多线程获取鼠标位置后结束线程
直接复制就可以用import timeimport sysimport pyautoguiimport threadingimport inspectimport ctypesfrom pynput import mouseTAG = Falsedef on_click(x, y, button, pressed): global TAG if pressed: # Pressed 鼠标按下 TAG = True sys
2021-03-02 13:58:43 334
原创 ajax请求
ajax post请求 $.ajax({ url: "http://localhost:5000/extract", type: "post", data:JSON.stringify({"config":all_valued}), contentType: "application/json", dataType: 'json', async: true, success: functi
2021-02-22 15:52:03 125
原创 vue js 写法
<script>import axios from "axios";export default { name: 'task_management', data() { return { aa: '', sites: [], isShowPutong: true, isShowGaoji: false, id_search: '', id_input: '', id_picker: '',
2021-01-04 14:44:27 1046
原创 2021-01-04
vue安装npm install --save axios进行安装axiosimport axios from "axios"; created() { let that = this; const url = 'http://192.168.0.196:8001/task/'; axios.get(url).then(function (res) { that.taskList = res.data.tasks_list; } ).ca
2021-01-04 14:18:34 173
原创 js获取字节父节点,获取指定tab 行的值
$(this)获取当前点击的标签$(this).parent().parent().find('#path').val().find(’. path’) 查找父节点的path类.find(’#path’) 如果是for生成的,最好用class
2020-11-27 11:18:13 394
原创 python构建thirft rpc框架
python搭建thirft前期配置1.下载thirft https://downloads.apache.org/thrift/0.9.3/2.pip install thrift3.编写thrift文件(test.thrift)service userService { string newtask(1:string name) string tasks(1:string jsons) string pwdtrue(1:string pwdnum) string sel
2020-11-27 11:09:10 294
原创 Git连接公司项目,进行版本控制
1.生成ssh密钥ssh-keygen -t rsa -C “你的邮箱”2.然后去电脑配置里面查看3.安装Git在你修改的项目右击git bash输入git status查看跟公司项目的有没有修改如果有修改,会有提示的例如:(这些红色的就是你修改过的)4.git addgit add 你想提交的的文件(git add 文件路径)这个文件是在当前git bash的目录下的gi...
2020-02-25 18:04:56 624
原创 gunicore+nginx项目部署(Django,阿里云服务器)
在你的服务安装(pip install gunicorn gevent)在你主目录建立一个gunicorn-config.py文件,文件名可以随便起编写gunicorn-config.py,新建logs文件夹注意:下面代码bind = [“127.0.0.1:9999”]在nginx反向代理的时候会用到,必须一致,为什么建立logs文件夹?用来存日志,细心的同学会发现,pidfile ,...
2019-11-30 12:10:52 359
原创 Django,nginx+uwsgi项目部署(阿里云服务器)
uWSGI首先在你项目的主目录建立一个uwsgi.ini文件(在此之前你需要把setting中的DEBUG改为False,ALLOWED_HOSTS = [’*’])编写uwsgi.ini文件[uwsgi]# 使用Nginx连接时使用,Django程序所在服务器地址socket=127.0.0.1:9999# 直接做web服务器使用,Django程序所在服务器地址# http...
2019-11-30 11:48:05 213
原创 numpy,pandas实用知识(数据分析基础)
numpynumpy的四个属性:ndim 维度 ;shape ;size;dtype 类型ndarray的类型优先级:str>float>int(类型一致,不一致按照类型优先级统一类型)numpy的routines函数numpy.ones() 创建全是1的矩阵numpy.zeros() 创建全是0的矩阵numpy.eye() 创建单位矩阵numpy.fu...
2019-11-09 18:05:57 297
原创 Ubuntu服务器配置nginx(包学会,不学会你留言我手把手教学)
首先安装nginx服务apt install nginx(这是命令是root用户使用的,如果不是超级管理员,则使用下面的命令)sudo apt install nginx安装完nginx需要去nginx.conf修改配置文件(配置文件在/etc/nginx)在你服务器中输入: cd /etc/nginx/进入nginx.conf(vi nginx.conf)然后我们看到...
2019-10-26 18:21:17 800
原创 Error while obtaining start requests
scrapy解决这个问题原因是你的网页页面少了https://域名.com添加上去就可以正常访问
2019-10-24 21:36:48 3592 2
原创 异步发送邮件(celery)
首先创建一个worker的python包,在worker的__init__.py中配置import osfrom celery import Celeryfrom worker import config# 加载django的环境os.environ.setdefault("DJANGO_SETTINGS_MODULE", "项目名.settings")# 实例化celery...
2019-10-10 21:54:36 806
原创 django使用redis存session,短信验证码
首先在setting文件中配置CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", # 改成ubuntu的ip "OPTIONS": { "CLIENT_C...
2019-10-10 21:07:06 1013
原创 Django创建项目的基本配置
首先创建虚拟环境 pip install virtualenv pip install virtualenvwrapper-win(windows就加-win)创建虚拟环境: mkvirtualenv 虚拟环境名(自己随便定义)删除虚拟环境: rmvirtualenv 虚拟环境名进入虚拟环境: workon 虚拟环境名 退出:decativate安装Django库pip i...
2019-10-10 20:14:07 652
原创 python高阶函数
高阶函数1.MapReduceMapReduce主要应用于分布式中。大数据实际上是在15年下半年开始火起来的。python的优点:内置了map()和reduce()函数,可以直接使用。map()函数功能:将传入的函数依次作用在序列中的每一个元素,并把结果作为新的Iterator返回语法:map(func, lsd)参数1是函数,参数2是序列#一、map()#原型 ma...
2019-09-07 16:35:02 660
原创 python初次体验tornado
tornado框架的初次使用第一步导入tornado:pip install tornado第二步创建一个py文件,开始写代码:#导入tornado包import tornado.webimport tornado.ioloop#创建一个路由的类,然后通过下面的app进行访问class MainHandler(tornado.web.RequestHandler): def ...
2019-09-02 21:13:36 639
原创 pycharm 连接SQL
import pymysqlconn = pymysql.Connect( host='127.0.0.1', port=3306, user='root', password='123456', database='mydb', charset='utf8',)cursor = conn.cursor()#开启事务conn.begin...
2019-08-18 21:43:38 4204
原创 linux基础知识
Linux的基本知识 Linux的五大支柱:1.基于Unix的操作系统2.参考了minix的操作系统3.GNU计划4.POSIX标准5.互联网的发展Linux的内核: Linux内核 Windows的内核:ntLinux的服务器:Ubuntu,centos,rehat,debianlinux的文件操作系统:ext4快捷键启动终端(terminal):Ctrl+alt+tL...
2019-08-17 11:57:08 193
原创 python 面向对象ATM,不用数据库版本
import timeimport randomclass Users(): #注册开户,输入基本信息 def zhuce(self): name = input('请输入你的名字:') phone = int(input("电话:")) idcard = int(input("身份证号码:")) #调用Car...
2019-07-24 17:29:28 1697 1
原创 list,tuple的基本操作
一、list列表1.概述:通过前两天的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班级有20个人,现在求班级的平均年龄。若按照之前的方式来解决age1 = 10age2 = 12...age20 = 12average = (age1 + age2 +...+age20)/20在这里,很显然这种方法显得很麻烦,而python提供了一种解决方案,...
2019-07-16 20:41:16 267
原创 while,for,string的使用
一、Python的分支(条件)语句2计算机之所以能够自动化执行任务,是因为它自己可以做条件判断。思考1:现有一需求,比如,输入用户年龄,根据年龄打印不同的内容。if 判断条件: 执行语句...else: 执行语句...if语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示关系。需求1:如果年龄大于18,则打印...
2019-07-16 20:34:24 291
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人