通過python編寫定時任務壓縮日誌檔案

2021-08-02 22:37:10 字數 2045 閱讀 2247

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...