Python

解决python模块报错:“bz2 module is not available, No module named '_bz2'”

之前python在用pip安装scrapy模块的时候遇到过这个情况,但只是记笔记没有总结出来,今天又遇到了一次,索性博客记录一下。 解决方案 安装 bzip2-devel: 方法一: yum install bzip2-devel 方法二: 如果不行,可以编译安装: wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz && tar -zxf bzip2-1.0.6.tar.gz &&…继续阅读 »
Python

nginx+uwsgi完美配置文件,解决“upstream prematurely closed connection”报错

这段时间在折腾django,一开始用单一的uwsgi控制web访问,虽然说没有什么大问题,但是很多东西没法配置,比如超时时间,uwsgi虽然有个“harakiri”配置项,但并没有什么作用。 所以终究还是需要接口nginx来做前端代理,但是在代理的出现了一个问题,前端一直没有响应,nginx错误日志(/var/log/nginx/e…继续阅读 »
Python

快速入门分布式消息队列之 RabbitMQ(下)

我们在 快速入门分布式消息队列之 RabbitMQ(上)和 快速入门分布式消息队列之 RabbitMQ(中) 分别介绍了 RabbitMQ 的对象概念及其关键特性,本篇将通过代码实现的方式来回溯这些知识点,从应用实践的角度继续深入 RabbitMQ。 首先安装 RabbitMQ 的 Python 客户端,最常用的就是 pika: pip install pika …继续阅读 »
Python

快速入门分布式消息队列之 RabbitMQ(中)

紧接上文:快速入门分布式消息队列之 RabbitMQ(上),继续来看 RabbitMQ 都有哪些值得我们关注的特性。 Message Acknowledgment 消息应答 假设一个场景,消费者接收到了消息,但却在处理消息的过程中发生了意外退出的情况,那么此次消息的传递就应该被视为「无效传递」。显然「无效传递」的情况是…继续阅读 »
Python

快速入门分布式消息队列之 RabbitMQ(上)

之前我们的分布式消息队列使用的是RabbitMQ,但仅限于使用它,但是对于它的内部机制的细节没有太多的认知,偶然从某公众号文章中看到RabbitMQ系列的详解,并且比较通俗易懂,所以拿过来分享一下。 简介 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个基于应用层的异步消息服务协议…继续阅读 »
Python

解决Python3 requests 响应头中文GBK编码报错,无法请求

问题表现: 响应头中有gbk编码的中文,导致requests无法解码读取header。 http包如图: Python 3.4.3 (default, Aug 25 2017, 16:49:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import requests >>> res = requests.get('http://down.chinaz.com/download.asp?id=35&…继续阅读 »
Python

Python event控制多线程停止方案

背景: 多线程跑系统识别,当某线程得到结果后,需要优雅的停止平行的其他线程,结束本次任务。 Python threading模块不同于其它语言之处在于它没有提供线程的终止方法,而且python的多线程设计本身也是不希望用户这么做,但是很多时候我们得到某个结果后为了节省不必要的资源 必须停止其他线…继续阅读 »
Python

Python Celery 多线程取结果报错:'list' object has no attribute 'decode'

这个问题困扰了我估计有一个星期问题,而问题的一开始我没有任何头绪,问题的表现就是调用节点去请求任务时,时常报错:   报错信息诸如: Protocol Error: , b'\x00\x00\x00\x00\x00\x00\x00\x00\x00*3' Error while reading from socket: (9, 'Bad file descriptor') 'int' object has no attribute 'decode' name 'self' is not defined only …继续阅读 »
Python

Python-DBUtils 使用mysql数据库连接池提升效率

随着全网扫描项目的开发,越来越细致的问题暴露出来,从能用到用的好,还有很长的路要走。 这个问题前段时间就发现了,程序一般跑个一天会越来越慢,直到某个时候程序彻底崩了,而且最后的报错也一般是mysql的报错: pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query ([Errno 104] Co…继续阅读 »
Python

理解Queue队列中join()与task_done()的关系

在网上大多关于join()与task_done()的结束原话是这样的: Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号 Queue.join() 实际上意味着等到队列为空,再执行别的操作 但是可能很多人还是不太理解,这里以我自己的理解来阐述这两者的关联。 理解 如果线程里…继续阅读 »