是通过任务计划程序安排python脚本还是在需要时运行代码更好?

时间:2018-01-05 04:51:15

标签: python batch-file taskscheduler

所以这是我一直想知道的事情,虽然我不知道是否有正确的答案,但可能有更好的选择。

那么下面哪个选项最好安排python脚本在特定时间运行?让我知道你喜欢什么,或者你有另一种选择。

1)获取一个python文件script.py,编写一个“.bat”文件,在命令提示符下运行代码,然后使用windows native task scheduler在每天的特定时间启动该文件。

BAT示例:

cd C:\Users\Administrator\Documents\Scripts
python script.py

这是运行python脚本的BAT文件的一些代码。

2)使用python在文件中创建一个定时任务,如下面的一些示例所示:

import schedule
import time

def job():
    print("I'm working...")

schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)

while 1:
    schedule.run_pending()
    time.sleep(1)

from datetime import datetime
from threading import Timer

x=datetime.today()
y=x.replace(day=x.day+1, hour=1, minute=0, second=0, microsecond=0)
delta_t=y-x

secs=delta_t.seconds+1

def hello_world():
    print "hello world"
    #...

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

from datetime import date
from apscheduler.scheduler import Scheduler

# Start the scheduler
sched = Scheduler()
sched.start()

# Define the function that is to be executed
def my_job(text):
    print text

# The job will be executed on November 6th, 2009
exec_date = date(2009, 11, 6)

# Store the job in a variable in case we want to cancel it
job = sched.add_date_job(my_job, exec_date, ['text'])

# The job will be executed on November 6th, 2009 at 16:30:05
job = sched.add_date_job(my_job, datetime(2009, 11, 6, 16, 30, 5), ['text'])

说到选项2,我可以提供很多例子,但我想知道你的意见有什么更好。

其中一个选项是否使用更多处理能力?其中一个选项更可靠吗?等

2 个答案:

答案 0 :(得分:2)

我将选择选项1.如果选择选项2,则代码将无法在多种情况下运行,例如机器重启或python IDE崩溃。 只要您的机器正在运行,选项1就会运行您的代码。

答案 1 :(得分:0)

我从未亲自使用过选项2。 通常,如果您只有一台或两台服务器。可以使用Task Scheduler(Windows)或cron(Linux)。

还有AutoSys之类的工具可用于计划批处理作业。