
python
BlueBlueSkyZ
这个作者很懒,什么都没留下…
展开
-
使用Docker-compose启动Django+MySQL+Redis容器
前言使用docker一般是为了部署方便,我这边的需求也是因为本地测试基本完成之后准备将一个Django项目上云。但是因为我这个项目使用了channels,要用到Redis,同时数据库是MySQL。如果是纯手动部署时真的很麻烦,因此找资料的时候发现了Docker-compose可以帮我完成部署这个工作。Docker-compose能够将我的项目与MySQL、Redis三个容器一起拉起运行,从而省去了配置环境的麻烦。具体操作1.Django项目创建创建Django项目的步骤可以参考网上,我参考的是菜鸟原创 2020-09-01 12:05:10 · 934 阅读 · 0 评论 -
Matplotlib中文乱码
我这边是Ubuntu,首先可以先将所有中文字体例举出来fc-list :lang=zh会有很多字体,选一个就好。例如这边选用了这一行:/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei:style=Regular然后就在matplotlib配置处添加字体即可plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei'] # choose chinese font in原创 2020-08-21 23:48:38 · 864 阅读 · 0 评论 -
aws python操作
需要安装:pip install awsclipip install boto3aws下载文件def download_bag_from_s3(): """ download_fileobj('BUCKET_NAME', 'OBJECT_NAME', f) :return: """ s3_client = boto3.client('s3', endpoint_url='http://s3.cn-szh.momenta.works') with op原创 2020-08-21 23:46:20 · 465 阅读 · 0 评论 -
Celery查看任务执行状态
使用AsyncResult就可以通过id找对应任务的执行状态了from celery.result import AsyncResulttask = AsyncResult("your-task-id")status = task.status但是看stackoverflow第二个回答,确实也是我的一大问题,如果在执行状态还是显示PENDING。另外如果task_id根本找不到,celery也是返回PENDING的。作者说的是要有一个独立于Celery的存储,我这边是使用了MongoDB存储各个任原创 2020-08-21 23:44:12 · 9021 阅读 · 3 评论 -
Celery任务优先级管理设计
Celery是Python的一个分布式任务队列,中文文档、官方文档在此主要功能这边有三类的任务手动、半自动、自动任务,要求优先级手动>半自动>自动。因为我这边节点只有一个因此也没有使用到分布式,如果分布式的话配置可能更复杂一些。这边的Celery版本是4.x.x,现有的很多博客都是3.x.x版本的,尤其是配置文件中的一些属性都进行了修改(大部分是大写变小写了,你可以先用3.x.x版本的写上去他会提示你改的,这点还是比较科学)。因此还是建议紧跟官方文档(虽然感觉维护得也一般)文件配置首原创 2020-08-21 23:42:11 · 1908 阅读 · 2 评论 -
Python2 Python3都统一的输出方式
因为有python2和python3混合的情况,所以需要一个统一的输出方便调试,其实就是用sys.stdout.write就行了。就拿flask启动函数为例吧,如下所示:if __name__ == '__main__': port_id = 8471 server = pywsgi.WSGIServer(('', port_id), flask_app) sys.stdout.write('restful server start, open port ' + str(port原创 2020-08-21 23:34:22 · 344 阅读 · 0 评论 -
Flask WebSocket使用
前言有一个老项目不得不在python2的容器中运行,因此这里设计了一个websocket请求方式,让外部的python3代码与内部的python2保持一个长连接减少开销。如果你都是python3的话,可以参考后面的方法,但我不保证python2的部分能移植到python3上(不过感觉还是差不多)。这里不得不提的是,flask虽然没有django健全,但是如果是简单使用不涉及到复杂的组管理等,还是方便太多了。django的websocket还要配置channels,麻烦得很。正文python2提供w原创 2020-08-21 23:30:28 · 468 阅读 · 0 评论 -
Poetry虚拟环境部署
官方文档在此,poetry目前来说是取代pipenv的一个工具,后者已经几乎不维护了,被抛弃也是正常的。安装过程不再赘述了,看官方文档就行了,记录一下简单的使用操作。简单操作初始化会生存一个toml文件,这个文件很关键,将会根据它来部署环境。定位到你的项目文件夹,执行:poetry init会有很多配置让你输入,如果没什么特殊需求全部默认即可。添加环境有很多环境的话可以直接写在toml文件里面,不过如果不多的话可以使用a原创 2020-08-21 23:27:42 · 3222 阅读 · 0 评论 -
Flask_restful自定义错误返回
因为内部abort函数问题,目前只能定制400错误,即parser的一些参数错误等首先先写一个errors.py文件确定自定义的格式:"""design the custom error response of flask-restful"""from flask_restful import abortdef generate_response(msg, status): return { 'response': { 'success': 0原创 2020-08-21 23:26:28 · 683 阅读 · 0 评论 -
使用Flask提供Restful服务
前言restful类型的服务还是比较方便的,尤其是对于开发者来说。而Flask的话相比Django更轻量化,因此这边选用了Flask进行restful服务的编写。步骤安装pip install flaskpip install flask_restfulpip install gevent例子from flask import Flask, jsonifyfrom flask_restful import Resource, reqparse, Apiimport flask_rest原创 2020-08-18 23:37:27 · 349 阅读 · 0 评论 -
MongoEngine使用
前言MongoEngine其实是一个ORM框架,像django有自身的ORM,但是当你使用flask或者仅仅是需要使用MongoDB,MongoEngine就是一个高效的选择。官方文档,下载什么的这边就不加以赘述了,就是讲一下简单使用,老四样——增删查改。。具体使用类定义首先要对MongoDB中的集合属性进行定义。首先需要声明所属的集合collection要注意的是类必须包含集合中所有的属性,如A有field1、field2,B有field2、field3,则这个类需要包含这三个field。原创 2020-08-18 23:29:10 · 471 阅读 · 0 评论 -
Python如何获取项目及系统根目录
其实不算特别复杂,我们先获取py文件的绝对路径,一般系统根目录就是斜杠前面两个,用正则表达式即可获取,而项目根目录则是该py文件的父文件夹。还是比较有用的,尤其是跨文件夹引用,代码如下:import reimport osROOT_PATH = re.match('/.*?/.*?/', os.path.abspath(__file__)).group(0)[:-1]PROJECT_ROOT_PATH = os.path.dirname(os.path.abspath(__file__))原创 2020-08-18 23:17:04 · 3399 阅读 · 0 评论 -
Matplotlib绘制不从原点开始,划分间隔可变的热力图(heatmap)
前言我有一个功能需要将一张热力图覆盖在图像上,但是图像的原点以及x轴的刻度是特定的。因此我需要对热力图生成的位置进行调整,而一般热力图是直接给一个2D的数组直接以(0,0)为起点扩散的,因此需要进行一些改动。方法原来随机生成的热力图代码import numpy as npimport matplotlib.pyplot as plta = np.random.random((16, 16))plt.imshow(a, cmap='hot', interpolation='nearest')原创 2020-06-12 21:50:29 · 1772 阅读 · 0 评论 -
Qt错误:This application failed to start because it could not find or load the Qt platform plugin cocoa
前言运行程序报错:objc[18135]: Class QMacAutoReleasePoolTracker is implemented in both /Users/zheyima/anaconda3/envs/IR_camera/lib/python3.6/site-packages/PyQt5/Qt/lib/QtCore.framework/Versions/5/QtCore (0x119b8f060) and /Users/zheyima/anaconda3/envs/IR_camera/l原创 2020-05-20 22:47:32 · 1760 阅读 · 1 评论 -
django model获取指定时间段(datetime)的对象
前言有一个打卡表的model,里面的打卡时间是datetime类型的。经常会有这样的需求,比如获取今日的打卡,或者是获取前一周的打卡状态。正文我有一个对象Monitor,其中monitor_time是Datetime类型,这里使用了datetime.timedelta这个偏移进行了遍历,对一周内的打卡状态进行了输出。def data_analysis_get_monitor_info_date_db(): now = datetime.datetime.now() offset =原创 2020-05-09 16:33:22 · 1842 阅读 · 0 评论 -
Django框架下使用ajax POST方法
前言这是使用ajax POST方法进行异步请求时遇到的问题,主要原因是在于settings里面'django.middleware.csrf.CsrfViewMiddleware'这个模块进行的安全性验证,会导致我们出现403错误,详情见这篇博客。错误一开始是这么写的: $.ajax({ method: "POST", ...原创 2020-04-28 21:38:29 · 422 阅读 · 0 评论 -
Django为数据库ORM编写单元测试
前言在进行网页开发时,与数据库对接是常规操作。但是编写完代码,一般一次就成功的概率不高,所以先进行一下单元测试很很有必要的。在创建Django APP时下面的文件除了models.py以及views.py这两个重要文件之外,还会看见tests.py这个文件,这就是今天的主角。编写测试样例首先如果你写了单元测试样例直接运行tests.py是不行的,会报错:django.core.exce...原创 2020-04-24 00:24:33 · 875 阅读 · 0 评论 -
小数据集下的多分类问题(神经网络/SVM方案)
这里我首先使用了神经网络对数据集进行分类,但经过测试,在数据集很小(不足200)的情况下,神经网络很难拟合出足够好的参数,最终准确率不到90%。最后还是决定用传统方法,这里选用的就是支持向量机,随机抽取每类样本作为训练集的情况下,SVM基本上能够达到全对,除非偶尔几次边际几个点被选做了测试集。原创 2020-01-11 15:32:29 · 4872 阅读 · 0 评论 -
机器学习数据准备:爬取数据+清洗生成数据集
前言机器学习很重要的一部分就是数据,因此可以通过爬虫爬取一些数据。爬取完数据之后,需要对数据进行清洗,使其成为能够被我们利用的数据集。这里我爬取了一个手机尺寸的网站,准备计算得到其高宽信息,并生成了一个数据集。后面会根据这个数据集进行一下分类操作。当然现在如果把爬虫爬到的数据用于商业,现在很多时候是不合法的,还是要注意点。准备工作这里使用的是python 3.6进行实现的,需要安装如下一些...原创 2020-01-10 21:40:44 · 3486 阅读 · 0 评论 -
使用python执行命令行获取Mac连接的蓝牙设备信息
前言因为需要对蓝牙信息进行获取,但是找了一些python模块,比如bluepy只支持Linux、bleson项目文档又太烂。因此准备直接通过命令行获取。步骤分析命令行Mac获取蓝牙信息可以使用下面的命令:system_profiler SPBluetoothDataType使用python的os模块即可,执行完成之后如下。Bluetooth: Apple Blueto...原创 2019-10-21 19:21:02 · 3722 阅读 · 0 评论 -
解决Mac Anaconda与Oh-my-zsh冲突无法创建新环境问题
前言因为安装了Oh-my-zsh,而anaconda是与其冲突的,所以根本无法从Anaconda Navigator中创建新的环境。目前的解决方案不算完美,只能通过命令行使用,但基本不影响使用。问题出现过如下报错The environment is inconsistent, please check the package plan carefullyRemoveError: ‘r...原创 2019-10-06 14:21:44 · 1349 阅读 · 1 评论 -
使用nginx提供支持https的docker+django服务
我的思路是使用nginx的反向代理,既然我们现在只要开一个服务就好了,那就使用nginx直接把访问转发到现有的服务端口即可,所有访问80端口的请求都被转发到本机的8080端口。然后将免费的CA证书配置在nginx里面,即可提供完备的https服务。原创 2019-07-30 15:21:42 · 575 阅读 · 0 评论 -
Django网页服务解决TensorFlow模型重复加载问题,并完成启动时完成预热加载
前言这个一个项目上遇到的问题,我有一个很大的人脸识别模型,每一次Http request请求,这个模型就会像以前一样在一次会话中执行一次模型加载。在以前的应用场景下,要么是模型较小,根本感受不到加载;要么就是根本就没有考虑过速度。但这次需要提供一个网页的服务,很明显得发现,响应速度很慢,经过分析发现,80%的时间都消耗在模型加载上了。因此提出两个疑问:能不能不要重复加载模型呢?模型加载很...原创 2019-04-16 22:01:59 · 3672 阅读 · 11 评论 -
Docker在云服务器上快速部署Django项目
前言上一章讲了如何本地打包步骤制作镜像登录执行login即可登录,Mac端是已经登录过的,直接运行代码就可以通过验证了,其他端输入DockerID和密码即可完成登录。docker login修改名称你需要根据你的用户名修改你项目的名称,比我的用户名为bluebluesky,就需要在项目前添加blueblueskydocker tag XXX bluebluesky/XXX如...原创 2019-04-08 22:03:04 · 859 阅读 · 0 评论 -
使用Docker本机部署Django项目
前言因为项目环境配置太麻烦了,所以还是选用了Docker这个技术作为一个部署的解决方案。一些基础的步骤就跳过了,这里主要讲如何用Docker启动一个Django项目,所以一些高级的部署方式,比如说用nginx管理等都没有涉及。当然本机部署只是第一步,后面还是需要研究一下如何将整个容器打包运行到服务器上的,这里权且先做一个镜像测试一下吧。过程安装Docker这里就跳过啦,教程应该一大推,...原创 2019-04-08 11:35:13 · 1652 阅读 · 0 评论 -
linux(Ubuntu)环境下pycharm的安装及使用
前言由于学习需要,准备开始在linux环境下使用python。一开始是使用了vim作为编译器的,我承认vim确实很简洁,然而对于我这种新手来说确实是很低效,一开始用vim写代码真的是让我重新体会了一遍VC手撸C语言的感觉,而且面对了还是tf这种函数巨多的库。因此还是转去用了pycharm,可能我注定和大神无缘吧,逼格都提升不到。这篇文章主要介绍linux下的安装、环境配置和学生优惠。安装...原创 2018-05-04 23:05:37 · 8017 阅读 · 0 评论