成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

任務自動化 :用 Python 創建 Crontab 任務

開發
本文的目的是使用python-crontab庫編寫Python程序的執行計劃。這個庫允許你使用API在操作系統中生成crontab文件,而不必使用特定的操作系統命令。

如果你不知道Crontab是什么,它是一個用于Unix和類Unix操作系統的實用工具,允許你在特定時間自動安排和執行任務。Crontab的一個很大優勢是,它在崩潰或重啟后仍然有效。Crontab條目保存在由cron守護進程讀取的文件中,該守護進程在系統啟動時自動啟動。

本文的目的是使用python-crontab庫編寫Python程序的執行計劃。這個庫允許你使用API在操作系統中生成crontab文件,而不必使用特定的操作系統命令。

首先,我們安裝該庫:

poetry add python-crontab

然后,我們創建一個名為create_crontab.py的文件,并包含以下內容:

if __name__ == '__main__':
    cron_tab = CronTab(user=True)

    list_cron(cron_tab)
    delete_cron(cron_tab)
    create_cron(cron_tab)
    list_cron(cron_tab)
  • cron_tab = CronTab(user=True): 我們創建一個與當前用戶crontab關聯的CronTab對象。這將允許我們訪問和操作計劃任務。
  • list_cron(cron_tab): 我們將創建一個名為list_cron的函數,用于在屏幕上顯示所有計劃任務的列表。 
  • delete_cron(cron_tab): 我們將創建一個函數,用于在創建計劃任務之前從crontab中刪除所有計劃任務。這一步在更新計劃定義時非常有用。 
  • create_cron(cron_tab): 我們將實現一個create_cron函數,用于創建新的計劃任務并將它們添加到crontab中。

列出計劃任務

我們將CronTab對象傳遞給此函數并迭代不同的任務。

def list_cron(cron):
 for job in cron:
     print(job)

刪除計劃任務

在進行更改時,總是強制crontab寫入。

def delete_cron(cron):
 cron.remove_all()
 cron.write()

創建計劃任務

假設我們要安排執行位于以下絕對路徑的程序:

/Users/xavierescudero/Projects/tutorial-trading-bot/tutorial_trading_bot/exchange_historical_importer.py

Crontab腳本在后臺運行,不在我們的項目內,因此它不知道模塊路徑。我們需要給它指示:

  • 進入根目錄:cd /Users/xavierescudero/Projects/tutorial-trading-bot
  • 在Poetry管理的虛擬環境中運行模塊:poetry run -m tutorial_trading_bot.exchange_historical.importer
  • 使用-m選項,Python會在系統搜索目錄和當前目錄中查找模塊,導入它,并像獨立腳本文件一樣運行它。

模塊目錄的位置

我們可以使用pathlib從create_crontab.py模塊文件的相對路徑獲取項目的根目錄:

from pathlib import Path
PROJECT_DIR_PATH = str(Path(__file__).parent.parent)

并創建到此目錄的目錄更改命令鏈:

CD_PROJECT_DIR_COMMAND = ''.join(['cd ', PROJECT_DIR_PATH])

定義要執行的命令

我們創建執行的初始部分,這將用于任何模塊:

EXECUTOR_COMMAND = ' '.join(['poetry', 'run python -m tutorial_trading_bot.'])

我們構建了運行每個模塊的完整命令(包括目錄更改):

EXECUTOR_PATH = ';'.join([CD_PROJECT_DIR_COMMAND, EXECUTOR_COMMAND])

HISTORICAL_IMPORTER_JOB = ''.join([EXECUTOR_PATH, 'exchange_historical_importer', ' &'])
TRADING_BOT_JOB = ''.join([EXECUTOR_PATH, 'trading_bot', ' &'])

定義計劃任務

現在我們有了命令,使用python-crontab庫的new()函數創建計劃任務,并用setall設置cron表達式。

def create_cron(cron):
 """
 Check crontab values using https://crontab.guru
 """
 cron.new(command=HISTORICAL_IMPORTER_JOB).setall('59 21 * * *') # At 21:59 every day
 cron.new(command=TRADING_BOT_JOB).setall('59 22 * * *')
 cron.write()

在網站https://crontab.guru上,你可以驗證你的cron表達式,并找到大量示例。

重啟時執行(無需計劃)

當你不在家時,發現Python進程在重啟后沒有重新啟動是一件糟糕的事。這可能很令人沮喪,因為這意味著你的自動化任務或服務沒有運行。

我們還可以使用python-crontab庫在重啟時啟動程序:

cron.new(command=TRADING_BOT_JOB).every_reboot()

設置cron任務

我們現在可以從shell安裝我們的編程:

poetry run python -m tutorial-trading-bot.create_crontab

我們將在屏幕上看到計劃任務的列表:

2024-06-07 00:15:46,872 - __main__ - INFO - Crontab configured
59 21 * * *
責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2013-08-28 10:38:01

2019-11-14 10:00:18

Linuxcron任務自動化任務

2022-07-20 12:18:36

Python自動化工具tox

2024-08-14 14:42:00

2019-05-15 09:47:06

網絡自動化網絡中斷網絡

2022-08-30 19:14:31

LinuxBash

2024-07-01 18:07:30

Python腳本自動化

2022-07-11 10:08:19

系統管理任務自動化

2024-08-23 10:31:14

2021-01-27 07:56:04

Python編程語言

2024-05-16 09:26:11

PythonpyWinAuto工具

2022-07-25 11:25:42

Linux自動化技巧

2011-05-24 10:12:53

VPSCrontab

2021-03-09 10:08:15

Linux 自動化操作系統

2022-01-27 13:23:15

Linux技巧命令

2013-11-28 10:37:36

虛擬桌面環境

2009-10-28 10:05:29

Ubuntucrontab定時任務

2017-06-02 12:23:44

智能工廠物聯網制造業

2010-03-10 15:47:58

crontab定時任務

2022-10-09 14:50:44

Python腳本
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费一区 | 日本一区二区影视 | 精品欧美乱码久久久久久1区2区 | 精品在线一区二区三区 | 久久99国产精一区二区三区 | 一区二区三区成人 | 日本网站免费观看 | 在线观看成人免费视频 | 亚洲免费视频在线观看 | 伊人狠狠操 | 国产精品久久久久久久久免费丝袜 | 日韩欧美三区 | 精品欧美一区二区在线观看视频 | 亚洲成人中文字幕 | 中文字幕 在线观看 | 欧美日韩视频在线第一区 | 超碰成人免费 | av在线免费观看网站 | 欧美性猛交一区二区三区精品 | 午夜久久久久 | 日日操操| 91精品国产欧美一区二区成人 | 三级成人在线观看 | 国产精品精品3d动漫 | 精品国产伦一区二区三区观看方式 | 91电影在线播放 | 欧美一级三级在线观看 | 毛片免费看 | 日本三级做a全过程在线观看 | 欧美日产国产成人免费图片 | 欧美成年网站 | 99久久久无码国产精品 | 欧美不卡视频一区发布 | 日韩欧美三级在线 | 一级黄色毛片免费 | 91毛片在线观看 | 日韩精品一区二区三区 | 国产一区二区高清在线 | 中文字幕国产一区 | 国产精品综合网 | 午夜成人在线视频 |