python_celery redis的读取
1、execute_tasks.py # 读取任务队列存储进redis
import requests import re from lxml import etree from aqicn import crawldef get_cities():headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'}content = requests.get('http://aqicn.org/city/all/cn/',headers=headers)response = content.content.decode('utf-8')hongkong = re.compile(r'id=\'香港\'></a>(.*)<a id=\'蒙古\'></a>',re.S)taiwan = re.compile(r'id=\'台湾\'></a>(.*)<a id=\'新加坡\'></a>',re.S)land = re.compile(r'id=\'中国\'></a>(.*)<a id=\'越南\'></a>',re.S)hongkong = hongkong.findall(response)[0]hongkong = etree.HTML(hongkong)taiwan = taiwan.findall(response)[0]taiwan = etree.HTML(taiwan)land = land.findall(response)[0]land = etree.HTML(land)city_list = land.xpath('//a') + hongkong.xpath('//a') + taiwan.xpath('//a')for i in city_list:try:url = i.xpath('.//@href')[0]name = i.xpath('.//text()')[0].strip()if name:yield {'url':url,'city':name}except Exception as e:print(e)def task_manager():for data in get_cities():crawl.delay(data)if __name__ == '__main__':task_manager()
2、aqicn.py # 读取队列进行任务解析并存储
import requests from lxml import etree from celery import Celery# 这里定义了broker和backend # 注意IP和后面的数字都是可以调整的 app = Celery('aqicn', broker='redis://192.168.4.53:6379/1', backend='redis://192.168.4.53:6379/3')# 装饰器,说明这是一个task的实现 @app.task def crawl(data):headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Host': 'aqicn.org','Proxy-Connection': 'keep-alive','Referer': 'http://aqicn.org/city/all/cn/','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',}url = data['url']response = requests.get(url, headers=headers)html = response.content.decode('utf-8')html = etree.HTML(html)try:aqi = html.xpath('//div[@id="aqiwgtvalue"]//text()')[0] # 空气质量except:news = html.xpath('//div[@class="section-content"]/center//h3//text()')if news:aqi= ''.join(news)else:aqi = '页面加载错误'data['aqi'] = aqireturn data
3、redis_read.py # 从redis数据库中取值并删除原值,且一旦有新值传入,继续读取并删除,做到持久化,可以直接展示,或者存到mysql数据中
import redis, picklerediscli = redis.StrictRedis(host='192.168.4.53', db=3, port=6379)while True:result = rediscli.keys() # 持续从redis里拿keysfor i in result:key = i.decode('utf-8')data = rediscli.get(key)try:print(pickle.loads(data))rediscli.delete(key)except Exception as e:print(e)
转载于:https://www.cnblogs.com/hejianlong/p/10056733.html
python_celery redis的读取相关推荐
- 运维实践-最新Nginx二进制构建编译lua-nginx-module动态链接Lua脚本访问Redis数据库读取静态资源隐式展现...
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x0n 前言简述 知识引入 Lua模块指令阶段 0x01 部署环境 安装说明 安 ...
- 记一次Redis scard读取数据结果不对的问题【DaemonCoder】
今天在用Redis时遇到一个奇怪的问题,虽然很快就定位到了问题,但是在开发时确实忽略了,还是意识不到位,这里记录一下问题的来龙去脉让自己铭记. 背景 首先介绍一下背景,在一个类似抢票的项目中,其中有一 ...
- redis排查读取超时、连接超时
最近公司现网查询速度极慢,原因是因为有一个调度频繁查询产品详情,经理安排进行优化 笔者第一时间想到的是使用缓存,但因为生产环境产品信息量将近上千条热点数据,为防止撑爆服务器内存,考虑到了使用redis ...
- php redis 批量读取,PHP redis 批量操作
标签: 参考网站 phpredis扩展 :https://github.com/phpredis/phpredis#pconnect-popen 命令参考:http://doc.redisfans.c ...
- Redis数据读取(缓存击穿,穿透,雪崩)
内容文件参考"付费专栏"可领取.专栏购买者提供本内容"永久答疑和远程协助"服务.一诺千金! N.1 缓存处理流程 1)前台请求,后台先从缓存中取数据,取到直接返 ...
- redis 2m数据读取_Flink读写Redis(二)读取redis数据
自定义flink的RedisSource,实现从redis中读取数据,借鉴了flink-connector-redis_2.11的实现思路,对redis读取操作进行封装,其中flink-connect ...
- 封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>
封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>(使用lettuce连接池) 代码环境 框架:springb ...
- python如何读取数据时出现错误_在python3中,关于redis读取数据带有‘b’的问题...
在python3中,关于redis读取数据带有'b'的问题 #encoding=utf-8 from redis import * #读取数据 d1=input("您输入的数据是:" ...
- Redis安装与调试
Redis安装与调试 Redis安装与调试linux版本:64位CentOS 6.5 Redis版本:2.8.17 (更新到2014年10月31日) Redis官网:http://redis. ...
最新文章
- 通过mtd读写flash_关于如何在kernel起来之后通过直接dd读写nand flash分区来更新zImage的mtd问题...
- 华为 S5700S-28P-LI Console连接电脑
- 报名 | 清华大学海外学者短期讲学:数字经济创新创业课程
- LeetCode Combination Sum IV(动态规划)
- 用Python分析了20万场吃鸡数据,有不少有趣的发现
- 百度、华为、京东、B站最新面试题汇集,实战篇
- 英语作文谈谈你对计算机的看法,英语作文:谈谈你对网络语言的看法
- 组态王能直接读取仪表数据吗_液晶多功能网络电力仪表PD800H
- 统计个人已完成的工作量_2020个人年终工作总结怎么写已完成工作?
- java Spring beans
- 项目管理办公室 PMO
- 【链表】牛客网:链表内指定区间反转
- 语言 全排列 函数_【排列组合】错位全排列的简化计算公式
- Metatable让我从心认知了Lua(相知篇)
- kindle阅读mobi电子书资料共享
- gpio_desc()的分析
- java 利用Future做超时任务处理
- SparkEnv源码解读
- 最新!CCF-A类顶会WWW2020最佳论文出炉!OSU最佳论文
- 尚医通 (二十)就诊人用户管理 | 平台用户管理