python中的计划任务
除了依赖于linux的crontab外, 在python中, 有一些方法:
- z3c.recipe.usercrontab, z3c.recipe.usercrontab interfaces with cron using crontab(1), and allows normal users to install their own cronjobs.
- sched, python内置模块, "sched不支持多线程, 多线程用threading.Timer"
- twisted框架中的多线程.
- 使用python 做个定时器,定时触发一个操作,该用哪个模块。可以用 threading.Timer(*args, **kwargs)
- 复杂的
- 简单的
- 介于两者之间的
twisted实现方式
看了些文档, 利用最基本的一些接口实现了下, 但感觉还不是很明白内部如何.
# -*- coding: utf-8 -*- import sys, os from twisted.internet import reactor from twisted.internet import task reactor.suggestThreadPoolSize(20) # 线程池大小 def mainRun(): reactor.callInThread(check_notify_dn_list) # 具体的操作放在每个子线程中调用 print "check dn notify." reactor.callInThread(check_signup) print "check signup." # ... print "done.\n" #seconds = 10 # 检测间隔 if len(sys.argv) > 1: try: seconds = int(sys.argv[1]) except: seconds = 10 l = task.LoopingCall(mainRun) l.start(seconds) reactor.run()
其他
datetime的combine方法使用。
tomorrow_at_930 = datetime.datetime.combine(tomorrow, datetime.time(9, 30))
普通应用中使用django的orm方法,只要配置settings相关变量就可以了
from settings import DATABASE_ENGINE, DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD, DNST_CHOICES, PAY_EXPIRE, MSGTYPE_CHOICES, RCLOSE_DN_TIME, SM_CHOICES, OUT_CHOICES, SIGNUP_CONFIRM_TIMES, FIND_CONFIRM_TIMES from django.conf import settings settings.configure(DATABASE_ENGINE=DATABASE_ENGINE, DATABASE_HOST=DATABASE_HOST, DATABASE_NAME=DATABASE_NAME, DATABASE_USER=DATABASE_USER, DATABASE_PASSWORD=DATABASE_PASSWORD)
关于twisted的介绍文章:
ps: 最近diigo书签都不能用了. 保存好的网页真是不方便!