2016-06-21 5 views
0

私は、ウィキツールConfluenceからスペースをエクスポートおよびインポートする関数を呼び出すPythonスクリプトを作成しています。それは毎日実行する必要がありますが、私はcronを使用することはできませんので、私は彼女自身によってそれをスケジュールする方法を探しています。セルフスケジューリングされたPythonスクリプト

私は以下を作成しました。私は翌日の予定ですが、翌日の予定はありません。

#!/usr/bin/python 
from __future__ import print_function 
from sys import argv 
from datetime import datetime 
from threading import Timer 
import sys,os,subprocess 
import getpass 
from subprocess import PIPE,Popen 

date = (os.popen("date +\"%d-%m-%y - %T\"")) 
x=datetime.today() 
y=x.replace(day=x.day+1, hour=13, minute=56, second=0, microsecond=0) 
delta_t=y-x 
secs=delta_t.seconds+1 


def runExport(): 
    # HERE IS ALL THE CODE THAT HAS TO RUN EVERYDAY 

t = Timer(secs, runExport) 
t.start() 

誰かが私を助けてくれますか?スクリプトは、毎日05時00分に実行する必要があります。

Pythonのバージョンは2.6.6です。そして悲しいことに、モジュールをインポートするオプションはありません。

ありがとう!

+2

なぜ、cronを使用できないのですか? cronが信頼できない場合、なぜ置き換えが信頼されますか? –

+0

私は問題は、サーバーが再起動したときにスクリプトを開始することが多いと思います。サーバーのOSとは何ですか? –

+0

それは会社の方針です。悲しいことに、私たちはそれを知っていればおそらく殺されるでしょう。 –

答えて

0

あなたがそこでやっていることより少し単純なものを使うことをお勧めします。ここで見つけることができますSCHEDと呼ばれるPythonで簡単なスケジューリングライブラリーは、あります:https://docs.python.org/2/library/sched.html

あなたの実装のためにこれを使用しての簡単な例:

import sched, time 
s = sched.scheduler(time.time, time.sleep) 
delay_seconds = 5 
def print_time(): 
    print time.time() 
    s.enter(delay_seconds,1,print_time,argument=()) 

s.enter(delay_seconds,1,print_time,argument=()) 
s.run() 

このコードは、5秒ごとに実行し、プリントアウトされます現在の時刻。 delay_secondsをインターバルを実行する遅延に変更してください。

+0

これは私のために働きます!大いに感謝する! –

関連する問題