Python异步任务队列

在开发的过程中,有时会需要用到类似下面的这些操作

  • 用户注册时发送认证邮件
  • 带有Web界面的爬虫
  • 定时计划任务

这些任务的共同特点是执行所需的时间较长,但是我们又不希望其阻塞后续的操作。因此我们将这些任务放进任务队列里来运行。

Python常见的异步任务队列实现有功能较丰富的Celery和轻量级的RQ。
Continue reading “Python异步任务队列”

使用scrapy构建爬虫

新建一个scrapy项目

scrapy会初始化一个项目,项目文件包括:

  • items.py定制需要储存的文件的域,类似于orm
  • pipelines.py管道
  • settings.py设置相关参数
  • spider文件夹 定制爬虫

scrapy爬虫的组成

scarpy抓取一个页面的大致流程:

  1. 下载器下载HTTP响应内容
  2. 下载器传给执行回调函数进行解析
  3. 解析后调度器进行过滤,查重等等
  4. 将数据传给管道,作进一步处理

Continue reading “使用scrapy构建爬虫”

网易云音乐解析下载器

由于2016年网易云音乐的API变化,由旧API解析出的mp3文件URL全部失效。因此我基于musicbox项目中封装的新版API制作了这个下载器,用于通过歌曲,歌单或专辑id解析及下载mp3文件。

应用地址:http://nem-downloader.nyan.im
源代码:https://github.com/hyriamb/nem-downloader
API相关文档:https://github.com/darknessomi/musicbox/wiki/

Continue reading “网易云音乐解析下载器”

Python疑难解答笔记

目录

  1. 格式化输出list, dict等数据结构
  2. 实例方法与类方法
  3. UnicodeEncodeError: ‘ascii’ codec can’t encode

格式化输出list, dict等数据结构

使用pprint模块


Continue reading “Python疑难解答笔记”

Python实现微博与twitter单向同步

关于本项目

我在过去一段时间内都使用的是IFTTT的Recipe进行同步。但是IFTTT的同步有些缺陷:

  1. 不能判断该条微博是原创还是转发,因此转发的微博也会被同步过去,把时间线弄得一团糟
  2. 不能发图,而是将图片以链接的形式替换。访问图片要经过至少两次短连接跳转,体验极差。

为了改善上述两个问题我写了一个简陋的同步程序,用于将新发布的微博同步至twitter。

项目地址:https://github.com/hyriamb/weibo-twitter-sync-bot-public

Continue reading “Python实现微博与twitter单向同步”

nginx+uwsgi部署django应用

几个月之前写了一个django应用,现在记录一下部署过程,不然之后需要的时候就该忘了。

准备工作

项目完成之后首先运行开发服务器测试,确保无误。

安装一些东西

安装supervisor,用来管理uwsgi

安装uwsgi

用uwsgi手动运行项目进行测试

按理说我们应该使用supervisor来管理uwsgi,然而我这里遇到了一些麻烦。在我的ubuntu测试环境上,只要一启动supervisord,内存就会蹭蹭蹭往上涨,直到全部内存都吃掉之后卡死。

Image 055

反正我也没有那么多的项目要管理,所以直接放弃这货。

Continue reading “nginx+uwsgi部署django应用”

通过python与网易云音乐同步的音乐电台

传送门请戳页面上方的“音乐电台”

在一年前我做了一个音乐电台==>http://www.lynx.im/posts/891.html

现在我又把它翻出来了,

有两个目的

  1. 之前的背景图片轮播是用modernizr实现的,虽然很漂亮但是性能极差,通常载入时间要长达半分钟,还会莫名其妙的卡死。至于原因我也不清楚,因为不是我写的。
  2. 它的播放列表在一个js中,一首歌的格式是这样的:

手动添加列表是一件很恐怖的事情,我需要一个方案来将这个过程全自动化,并且与我的网易云音乐歌单同步。

Continue reading “通过python与网易云音乐同步的音乐电台”