所以这是我一直想知道的事情,虽然我不知道是否有正确的答案,但可能有更好的选择。
那么下面哪个选项最好安排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,我可以提供很多例子,但我想知道你的意见有什么更好。
其中一个选项是否使用更多处理能力?其中一个选项更可靠吗?等
答案 0 :(得分:2)
我将选择选项1.如果选择选项2,则代码将无法在多种情况下运行,例如机器重启或python IDE崩溃。 只要您的机器正在运行,选项1就会运行您的代码。
答案 1 :(得分:0)
我从未亲自使用过选项2。 通常,如果您只有一台或两台服务器。可以使用Task Scheduler(Windows)或cron(Linux)。
还有AutoSys之类的工具可用于计划批处理作业。