[英]How can I Schedule python script to run every day at specific time ? (except Windows schedule)
[英]How can I run my python script in the background on a schedule?
我有一個小的python腳本,可以創建從MySQL中提取的數據圖。 我正試圖找出一種在后台運行腳本的方法。 我嘗試過很多東西:
這些都有優點和缺點:
有人能指出我的方法來充分利用所有這些方法嗎?
為什么不嘗試將腳本變成正確的守護進程。 這個鏈接是一個很好的起點。
import os
import subprocess
import time
from daemon import runner
class App():
def __init__(self):
self.stdin_path = '/dev/null'
self.stdout_path = '/dev/tty'
self.stderr_path = '/dev/tty'
self.pidfile_path = '/tmp/your-pid-name.pid'
self.pidfile_timeout = 5
def run(self):
try:
while True:
### PUT YOUR SCRIPT HERE ###
time.sleep(300)
except Exception, e:
raise
app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()
您可以像任何其他Linux服務一樣啟動/停止/重新啟動此腳本。
cron作業通常可能是一種很好的方法,因為shell方法需要手動干預來啟動它。
一些建議:
您可以使用鎖定文件來確保cron作業只啟動python腳本的一個實例 - 通常在將cron用於較大的作業時會出現問題,因為它會在第一個實例實際完成之前啟動第二個實例。 您可以通過檢查鎖定文件是否存在來執行此操作,然后,如果不存在,則在腳本開頭“觸摸”文件並將其作為腳本末尾的最后一個操作“rm”。 如果鎖定文件存在 - 只需退出腳本,因為已經有一個實例在運行。 (當然,如果腳本死亡,則必須在再次運行腳本之前刪除鎖定文件)。
此外,如果資源使用過多是一個問題,您可以通過賦予它低優先級(前綴例如,nice -n 19)來確保腳本不會占用太多資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.