簡體   English   中英

在python中運行計划的任務

[英]running a scheduled task in python

我試圖在樹莓派上創建一個獨立的程序,該程序將在特定時間運行功能。 我已經進行了一些研究,所有內容似乎都指向使用crontab。 理想情況下,我不希望使用crontab,因為我希望以后可以共享該程序,並且要求用戶編輯其crontab似乎有點侵入。

該程序包括運行計划的任務(每天在特定時間運行),恆定的任務(每3秒鍾循環收集數據並在LCD上顯示),以及間隔執行的任務(每15分鍾運行某些功能)。

我的問題是,實現這一目標的最有效方法是什么? 我最初的想法是創建一個查看theTime元組和if語句以確定要運行的函數的函數,但即使是新手,這聽起來也很笨拙。 “計划”程序包似乎很有希望,但是我不確定如何在不斷運行的循環背景下集成計划任務。 有沒有人有過制作這樣的程序的經驗,也許有一些適用於他們的代碼示例?

您正在尋找的神奇詞是“服務”。 這些是操作系統運行時(例如)啟動的長時間運行的進程,理想情況下會定期檢查並在必要時重新啟動。

對於樹莓派,我還沒有做,但是我發現這看起來很有希望。 假設您的python腳本位於/root/mouse.py

首先,在/lib/systemd/system/mouselogger.service創建服務定義:

[Unit]
Description=Mouse Logging Service

[Service]
ExecStart=/root/mouse.py
StandardOutput=null

[Install]
WantedBy=multi-user.target
Alias=mouselogger.service

然后,使用以下命令在控制台上啟用:

sudo systemctl enable mouselogger.service
sudo systemctl start mouselogger.service

然后,您的腳本應管理自己的睡眠,例如:

from time import sleep
while True:
   sleep(2)
   print("hello!")

另一個可能更簡單的選擇是畢竟使用crontab:只需每分鍾運行一次腳本,或者如果足夠精細就每十分鍾運行一次腳本,如果此時無所事事就退出而不做任何事情。

查看最近的討論

如何在Python中獲得類似於Cron的調度程序?

對於其他一些示例,值得注意的是https://apscheduler.readthedocs.io ,它具有不錯的網頁。 以我自己的經驗,家中的書庫或擴展名會遇到夏季問題。 我想性能可能是個問題,新的調度工具通常會具有性能和其他限制,而cron則是經久不衰的,經過了實戰測試(即使早期的實現還很幼稚)。 有趣的文章http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM