python
文章平均质量分 56
翔云123456
这个作者很懒,什么都没留下…
展开
-
HTTP 认证方式
本文主要介绍HTTP 认证方式有哪些及在Python中的基本使用方式。原创 2024-01-20 12:26:12 · 1234 阅读 · 0 评论 -
python + VS code + Docker
在python项目开发中,经常需要安装依赖包,还要考虑版本兼容问题。尤其是,升级一个python版本,依赖包安装又要重新来一遍,太多的不兼容,virtualenv, pip等都存在兼容问题。本地安装特别痛苦。本文介绍 在python项目中,使用 VS code 以及docker的方式进行开发,可以带来很多便利。......原创 2022-08-31 23:52:08 · 995 阅读 · 0 评论 -
python gethostbyname 空字符串会被解析为0.0.0.0
在很多场景中,需要将主机名 或 域名解析为ip地址。在python 中,使用的是socket 包中 gethostbyname进行 主机名或域名到ip的解析过程。有一个问题,如果传入的主机名是空字符串,解析结果会是什么呢?import sockethostname=""ip = socket.gethostbyname(hostname)print(ip)output:0.0.0.0以上,仅记录之。...原创 2022-03-05 21:10:00 · 543 阅读 · 0 评论 -
python踩坑现场,看起来一样的两个字符串,却不相等
踩坑现场是这样的:首先定义两个字符串变量,在代码拷贝粘贴过程中,又重新定义其他的中间变量,在其中一个变量的赋值表达值后面误加了一个",",结果问题就来了。。。类似如下过程:>>> a = "123">>> s1 = a>>> s2 = a,>>> s1 == s2False>>> s1'123'>>> s2('123',)s2的定义中,s2=a,此时s2已经是一个元组,而不是原创 2020-11-22 10:24:47 · 2116 阅读 · 0 评论 -
sqlalchemy QueuePool limit of size 3 overflow 20 reached, connection timed out, timeout
开发过程中,最郁闷的不是代码一直报错,而是明确知道代码执行有异常,但就是没有具体的错误报出来,无法进一步定位到问题的根因。因此,平时工作中,养成良好的编码习惯是多么重要。例如,在代码有异常的地方,打印下日志。这个看似细小的动作,会给以后排查问题带来莫大的帮助。并且即使使用监控组件上报错误,也记得在本地打印下日志,方便问题追查。更何况,第三方监控组件可靠性不是百分之百的。万一,监控组件有个bug,把代码中的错误吞掉了。那更是增加问题排查的难度。最近就遇到了类似的问题。我们在代码中捕获异常后,先是使用原创 2020-09-20 15:00:58 · 1479 阅读 · 0 评论 -
吐槽一下python
关于python,优点有很多。例如,编码灵活,书写随意。印象最深的就是,Duck Type。也就说,如果使用会走路和会飞来衡量鸭子,那么如果一个物体,走路像鸭子,飞起来像鸭子,那么它就是鸭子。def test(duck): duck.Walk() duck.Fly()class A(object): def Walk(): print("walk...") def Fly...原创 2020-02-24 22:26:40 · 302 阅读 · 0 评论 -
制作docker映像(一)--python应用程序
本文以简单Python应用为例,介绍docker映像制作。1.创建Dockerfile工程目录结构如下:[lanyang@localhost docker_demo]$ mkdir -p myapp[lanyang@localhost docker_demo]$ cd myapp/[lanyang@localhost myapp]$ lltotal 8-rw-rw-r--. 1 la...原创 2020-02-15 19:49:56 · 585 阅读 · 0 评论 -
mysql timestamp为0值时,python读取后的对象为None
MySQL数据表中,如果timestamp类型的字段,值为0, python从数据库读取数据后,得到对象是什么类型,是否为None呢?下面来测试下。创建数据表首先创建数据表,其中字段pr_rule_update_time为timestamp类型,值为0.CREATE TABLE `orange_service` ( `id` int(11) NOT NULL AUTO_INCREMEN...原创 2019-10-13 11:14:18 · 852 阅读 · 0 评论 -
python SNIMissingWarning InsecurePlatformWarning
在python2.7 下使用requests进行爬网络数据时,遇到问题:问题: C:\Python2.7\lib\site-packages\requests\packages\urllib3\util\ssl_.py:315: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indicat原创 2017-11-18 21:54:17 · 948 阅读 · 0 评论 -
如何使用Django 启动命令行及执行脚本
使用django启动命令行和脚本,可以方便的使用django框架做开发,例如,数据库的操作等。django shell的启动启动命令:$/data/python-virtualenv/apple/bin/python /data/example/apple/manage.py shell与普通的python 命令行有什么区别? django shell 带有django的配置信息,可以使用dja原创 2017-11-26 11:44:29 · 10964 阅读 · 3 评论 -
python 如何将md5转为16字节
python的hashlib库中提供的hexdigest返回长度32的字符串。 直接通过digest返回的16字节,有不可打印字符。问题来了,因为md5sum是128bit,也就是16字节,如何将python生成字符串的转为16字节呢?请看下面代码import hashlibdef get_md5(s): m = hashlib.md5(s) return m....原创 2018-03-11 11:46:55 · 7865 阅读 · 0 评论 -
python 正则表达式的使用
本文以例子的形势,介绍如何在python中使用正则表达式。Example1#!/usr/bin/pythonimport reimport syspattern = re.compile(r'[a-zA-Z]+\s+[0-9]+')match = pattern.match(u"ni 12222")print matchif match: print m...原创 2018-03-04 10:50:55 · 270 阅读 · 0 评论 -
python json.dumps(output) ^ SyntaxError: invalid syntax
问题下面代码在有些机器上执行正常,有些机器上执行报错:import jsonoutput={}print json.dumps(output)python代码报错: line 277 print json.dumps(output) ^ SyntaxError: invalid syntax 这是一个奇怪的问题。 经过查看,报错的机器上的python版本是...原创 2018-05-19 21:41:49 · 2382 阅读 · 1 评论 -
python中比较两个list是否相等
要比较两个list是否相等,最常想到的是挨个比较两个list中的元素。今天介绍一种更简单的方式: 直接比较。例如,>>> l1=["a", "b"]>>> l2=["a", "b"]>>> l1==l2True>>>>>> l1=["a", "b"]>>> l2=["a",...原创 2019-03-24 16:53:26 · 58975 阅读 · 1 评论 -
HTTP长连接---requests的长连接
使用HTTP协议时,为了充分利用资源,经常会用到http的长连接,也就是底层tcp连接的复用。 在requests库中,HTTP的长连接是通过Session会话实现的。 会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能。所以如果你向同一主机发送多个请求,底层的原创 2017-07-23 17:53:10 · 16979 阅读 · 0 评论 -
Django settings 中的STATIC_URL
STATIC_URL的定义指定了静态资源的url。 例如 STATIC_URL = ‘/ticket/static/’以‘/ticket/static/’开头的静态资源自动重定向到STATICFILES_DIRSTATICFILES_DIR定义如下 BASE_DIR = os.path.dirname(os.path.dirname(__file__)) STATICFILES_D原创 2017-09-17 17:12:21 · 861 阅读 · 0 评论 -
python list列表分片
python列表分片功能强大,简单举例如下:>>> a=[1,2,3,4,5,6]删除第一个元素>>> a[1:][2, 3, 4, 5, 6]删除最后一个元素>>> a[:-1][1, 2, 3, 4, 5]删除第一个和最后一个元素>>> a[1:-1][2, 3, 4, 5]分片有3个参数,第3个参数是step,默认为1>>> a[::2][1, 3, 5]>>> a[::-2][6,原创 2017-08-29 20:36:43 · 3712 阅读 · 0 评论 -
关于celery worker的参数
关于celery worker的参数并发进程 -c CONCURRENCY, –concurrency=CONCURRENCY Number of child processes processing the queue. The default is the number of CPUs available on your system.指定并发子进程的数量,默认是cpu个数hostn原创 2017-08-26 12:45:11 · 14675 阅读 · 0 评论 -
'celery' object has no attribute 'utils
问题:以前经常使用celery.utils.uuid()获取通用唯一识别码,但在celery 4.1.0中使用时出现报错: ‘celery’ object has no attribute ‘utils原因:版本更新导致的不兼容问题。 官方给出的说法: celery.utils Utility functions. Don’t import from here direc原创 2017-08-26 12:07:56 · 1661 阅读 · 0 评论 -
python 深拷贝deepcoy
python 中的变量定义简单,直接赋值即可使用。但是也存在很多坑,就像listl列表和dict字段这类数据结构的拷贝问题。问题定义列表a,查看其地址>>> a=[1,2,3]>>> id(a)46832520L将a赋值给b,并查看地址>>> b=a>>> id(b)46832520L可以看到,a,b的指向同一块内存。 接着, 对b附加元素>>> b.append(4)>>> print原创 2017-08-26 11:14:50 · 523 阅读 · 0 评论 -
python 并集union, 交集intersection, 差集difference
python的集合set和其他语言类似,是一个无序不重复元素集, 可用于消除重复元素。支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算。不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。因为,sets作为一个无序的集合,sets不记录元素位置或者插原创 2017-08-26 10:07:04 · 36283 阅读 · 0 评论 -
python object does not support item assignment
先看以下代码:class Animal(object): def __init__(self, name): self.name = namea1 = Animal("panda")a1['age'] = 12当执行到a1['age'] = 12报错: Traceback (most recent call last): File “原创 2017-05-30 21:59:32 · 97450 阅读 · 1 评论 -
python kafka client--confluent-kafka-python
项目中需要使用python 向Kafka生产和消费数据,最初使用pykafka 。后来发现pykafka不支持client.id. 最后,终于找到confluent-kafka。python kafka推荐使用confluent-kafka,官方推荐的。 Confluent’s Apache Kafka Python client confluent-kafka-python ...原创 2018-06-10 11:21:48 · 8529 阅读 · 0 评论 -
python 字符串格式化—format
Python2.6 开始,新增了一种格式化字符串的函数 str.format()。使用起来简单方便,不会遇到使用%时候格式的选择问题。按照参数默认顺序>>> "yesday is {}, today is {}".format("saturday", "sunday")'yesday is saturday, today i原创 2018-10-28 11:54:51 · 284 阅读 · 0 评论 -
'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
问题rds_content = "{}, 执行了变更,sql语句:{}".format(ExecuteTime, sqls)'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)解决方法:由于字符串中包含中文字符,超出了acsii编码范围(128)。只需要将字符串前面加上u字符,...原创 2018-11-24 11:13:34 · 2218 阅读 · 1 评论 -
排查python内存泄露中几个工具的使用
本文主要介绍3个工具:pdb,objgraph,以及pympler。1.pdbpdb是专门用于python代码调试,模仿gdb。使用pdb可以查看堆栈,打印变量等。这里介绍的是命令行下的pdb。命令行下使用pdb,代码侵入小,调试方便。本例中,python安装在当前目录下.venv使用pdb加载python程序.venv/bin/python -m pdb orange.py&...原创 2019-09-15 18:57:34 · 16078 阅读 · 0 评论 -
关于排查python内存泄露的简单总结
这次的内存泄露问题是发生在多线程场景下的。各种工具都试过了,gc,objgraph, pdb,pympler等,仍然没有找到问题所在。pdb感觉用起来很方便,可以调试代码,对原来的代码无侵入性。排查问题的过程中,多线程场景下,相关的工具,显得无力的。使用objgraph时,代码执行很长时间后,show_growth()显示没有新创建的对象。这个可能是因为objgraph只针对当前线程的上下...原创 2019-09-15 18:00:45 · 1217 阅读 · 1 评论 -
python内存泄露memory leak排查记录
问题描述A服务,是一个检测MGR集群主节点是否发生变化的服务,使用python语言实现的。针对每个集群,主线程会创建一个子线程,并由子线程去检测。子线程会频繁的创建和销毁。上线以后,由于经常会有功能发布,从而重启服务,开始一段时间没有发现问题。半个月前的周二服务发布后,大约一周时间,没有再发布。到周末的时候,突然告警系统负载高,经过排查,发现内存几乎耗尽,并查到是A服务占用巨大内存,没有释...原创 2019-09-08 18:37:43 · 3156 阅读 · 2 评论 -
域名到IP 报错socket.gaierror: [Errno 8] nodename nor servname provided, or not known
Python中如何通过域名,查看对应的IP?请看如下代码:import sockethostname="www.baidu.com"ip = socket.gethostbyname(hostname)print "ip:", ip看下执行结果:ip: 112.80.248.75如果配置的hostname有问题,或者说域名配置错误,就会出现如下报错:Traceback (...原创 2019-09-08 16:30:26 · 2409 阅读 · 0 评论 -
python MySQLdb 如何设置读超时read_timeout
在python中,经常用到 MySQLdb操作MySQL数据库。在实现上,MySQLdb并不是纯python的,而是封装了MySQL C API库_mysql。对于MySQLdb是否支持read_timeout,其使用手册中对这个参数只字未提。所以,read_timeout是否真的可用,是存在疑惑的。stack overflow上面也有人问到同样的问题。接下来,我们从MySQLdb的源码库M...原创 2019-07-28 16:15:03 · 6944 阅读 · 2 评论 -
Python MySQLdb 执行sql语句时的参数传递
使用MySQLdb连接数据库执行sql语句时,有以下几种传递参数的方法。1.不传递参数conn = MySQLdb.connect(user="root",passwd="123456",host="192.168.101.23",db="cmdb")orange_id = 98sql = "select * from orange where id=%s" % orange_idc...原创 2019-05-11 22:57:47 · 7987 阅读 · 1 评论 -
python 逻辑运算符and or
Python中逻辑运算符与C、C++、Golang等语言不太一样。简单记录下。1. 都是真或第一个真,第二个假>>> a = 1>>> b = 2>>> c = (a and b)>>> print(c)2>>>>>>>>> d = (a or b)&...原创 2019-05-11 18:44:05 · 449 阅读 · 0 评论 -
python MySQLdb 一个连接connection多个cursor
使用MySQLdb时,如果创建一个连接connection,多个线程同时使用,会不会有问题?在下文中,我们将模拟这种场景,看是否会出现问题。1.示例1.1 正常的情况创建一个连接,两个线程同时使用这个连接,生成游标cursor,进行查询,并输出结果。程序启动后,让线程1睡眠1s,保证让线程2线执行。import MySQLdbimport threadingimport time...原创 2019-05-11 18:21:31 · 4016 阅读 · 2 评论 -
celery+RabbitMQ 实战记录2—工程化使用
中,已经介绍了celery和RabbitMQ的安装以及基本用法。本文将从工程的角度介绍如何使用celery。1.配置和启动RabbitMQ请参考celery+RabbitMQ实战记录。2. 安装和使用celery2.1 创建虚拟环境,并安装celery$ mkdir celery_demo$ cd celery_demo$ virtualenv -p python3 venv3...原创 2019-04-23 09:59:29 · 823 阅读 · 0 评论 -
celery+Rabbit MQ实战记录
基于以前的片文章,celery+Rabbit MQ的安装和使用本文更加详细的介绍如何安装和使用celey, Rabbit MQ。尤其是在使用celery时遇到的一些问题。1.安装 Rabbit MQ在 OS X上,直接执行如下命令:$ brew install rabbitmq其他操作系统下的安装可以参考安装 RabbitMQ启动RabbitMQ$ sudo rabbitmq-s...原创 2019-04-20 22:19:38 · 2215 阅读 · 0 评论 -
python3中的编码
python2字符串编码存在的问题:使用 ASCII 码作为默认编码方式,对中文处理不友好把字符串分为 unicode 和 str 两种类型,误导开发者将unicode作为唯一内码python3中默认编码方式修改为utf-8。在存储和显示上,python3使用文本字符和二进制数据进行区分,更加明确和清晰。文本字符使用str类型表示,str 能表示 Unicode 字符集中所有字符,...原创 2019-03-03 19:51:07 · 628 阅读 · 0 评论 -
python2的字符串编码(解惑)
关于python 字符串编码一直没有搞清楚,今天总结了一下。Python 字符串类型Python有两种字符串类型:str 与 unicode。字符串实例# -*- coding: utf-8 -*-# 这个是 str 的字符串s = '关关雎鸠'# 这个是 unicode 的字符串u = u'关关雎鸠'print isinstance(s, str) # True...原创 2018-11-24 13:14:46 · 1039 阅读 · 1 评论 -
SyntaxError: Non-ASCII character '\xe4' in file t.py on line 3, but no encoding declared
问题报错代码#!/usr/bin/pythons = "你好"print s执行报错:File “t.py”, line 3SyntaxError: Non-ASCII character ‘\xe4’ in file t.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-02...原创 2018-11-24 12:11:20 · 2823 阅读 · 0 评论 -
Connection to 10.17.1.226:5672 failed: timeout
问题:最近交换机更换板卡,造成网络超时严重。原来,向MQ投放消息都是正常的,现在也出现超时问题:使用pika 向 Rabbit MQ 生产消息,出现connection timeout: Connection to 10.17.1.226:5672 failed: timeout原因是,网络状况恶化,pika到 Rabbit MQ 的TCP 超时时间太短。默认情况下,pika的超时时间是0.原创 2017-08-06 17:17:13 · 1391 阅读 · 0 评论 -
404, "NOT_FOUND - no exchange 'orange_monitor' in vhost '/'
问题:生产者向Rabbit MQ中放置消息时,出现如下错误: 404, “NOT_FOUND - no exchange ‘orange_monitor’ in vhost ‘/’原因:Rabbit MQ 中不存在这个exchange解决办法:此处,消费者使用的celery worker。 先把消费者celery启动起来,消费者会自动去创建名称为’orange_monitor’ 的excha原创 2017-08-06 14:15:34 · 10201 阅读 · 2 评论