python学习日志

原创内容,转载请注明出处

Posted by Weakyon Blog on September 17, 2014

c开发起来比较慢,在做一些测试工具的时候python是一个不错的选择

首先贴一些学习参考的网站

廖雪峰的Python教程

对Python标准库的一个大致认识

使用C语言扩展python

下面是实例分享

一、用python实现断点续传的下载

fdfs的nginx模块有这个功能,用python试了下

#!/usr/bin/env python
#coding=utf8
 
import urllib2

#filename = raw_input()
filename = 'http://172.16.10.129/group1/M00/00/00/rBAKgVQXCoqAIuuxAAABsosmnQU7717.py'

httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler, httpsHandler)

urllib2.install_opener(opener)

try:
    req = urllib2.Request(filename)
    req.add_header('Range', 'bytes=0-40')
    res = urllib2.urlopen(req)
    
    data = res.read()
 
    print data
    res.close()
except Exception, e:
    print e

通过在头的Range段增加信息,完成断点续传的下载

二、基于c扩展python的webservice实现的fdfs_monitor

python毕竟运行效率不怎么样,用它比较高级的语言特性来实现webservice

后台数据由C程序的函数来生成,作为SO文件给python来调用

项目在下面

fastdfs_monitor

目前webservice实现了基本功能,能直接从fdfs的tracker中输出一些信息,下面用一个DB把数据存储起来,而后webservice从数据库调用信息来生成页面

形成一些核心信息,供维护者方便的监视集群的运行情况。

三、python的计划任务

python官方有个sched调度的库

只是只能触发一次,我想做个定时任务的,会设计起来比较麻烦,于是找到了APScheduler这个库,感觉还是挺好用的

这个指令可以无脑安装

easy_install apscheduler

贴代码

from datetime import datetime

from apscheduler.schedulers.blocking import BlockingScheduler

sched = BlockingScheduler()

def my_job(text):
	print(text)

sched.add_job(my_job, 'date', run_date=datetime(2014, 9, 18, 17, 19, 0), args=['text'])

sched.start()

这样就会运行起来啦

参考了老外的doc

17 Sep 2014