1. 定時任務使用的是apscheduler 框架, 使用本例前需安裝apscheduler。 具體安裝可參考我的《centos python2.6.6 公升級 2.7.5 並安裝pip, apscheduler》 這篇文章。
2. 不多說,直接上**了。
#coding=utf-8
#from apscheduler.schedulers.blocking import blockingscheduler
import datetime
import time
import os
import zipfile
import logging
logging.basicconfig(level=logging.debug,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %y %h:%m:%s',
filemode='w')
#定義乙個streamhandler,將info級別或更高的日誌資訊列印到標準錯誤,並將其新增到當前的日誌處理物件#
console = logging.streamhandler()
console.setlevel(logging.info)
formatter = logging.formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setformatter(formatter)
logging.getlogger('').addhandler(console)
root_path = "/usr/local/apache-tomcat/logs/"
def zip_files(zip_src):
logging.info( "begin zip ...")
if(os.path.exists(root_path+zip_src) == false):
logging.info( zip_src+" not found")
return
f = zipfile.zipfile(root_path+zip_src+".zip", 'w' ,zipfile.zip_deflated)
f.write(root_path+zip_src)
f.close()
logging.info( "zip "+zip_src+" done")
os.remove(root_path+zip_src)
def tick():
logging.info('tick! the time is: %s' % datetime.datetime.now())
now = datetime.datetime.now()
delta = datetime.timedelta(days=-1) #獲取前一天的日期
n_days = now + delta
yestoday = n_days.strftime('%y-%m-%d')
catalina_out = "catalina."+yestoday+".out"
zip_files(catalina_out)
if __name__ == '__main__':
scheduler = blockingscheduler()
scheduler.add_job(tick,'cron', hour='2') #每天兩點執行
#print('press ctrl+ to exit'.format('break' if os.name == 'nt' else 'c'))
try:
scheduler.start()
except (keyboardinterrupt, systemexit):
scheduler.shutdown()
3. nohup python compresslog.py >my.log & 通過該命令使python程式後台執行 Mysql編寫定時任務事件
場景 例如 某系統,使用者每天只能擁有一次的 機會,抽過後當天就不可再抽,但是過了24 00點後使用者就重新擁有一次 機會。像這種需要資料庫定時對某個字段進行更新操作的任務,完全可以通過資料庫本身的事件機制進行操作,而伺服器端也不需要用額外的 進行這種監控定時的操作。mysql 本文討論的是mysq...
python定時任務
說明 使用python內建的模組來實現,本篇部落格只是以迴圈定時來示範,其他的可以結合crontab的風格自己設定 一 導包 from apscheduler.schedulers.blocking import blockingscheduler二 普通函式的使用 1 interval模式,功能比...
python定時任務
原文 import schedule 2 import time 3 4 def test 5 print i m working.6 def test2 7 print i m working.in job2 8 9 每10分鐘執行一次job函式 10 schedule.every 10 minu...