如何安排python代码每天运行?
Posted
技术标签:
【中文标题】如何安排python代码每天运行?【英文标题】:how to schedule a python code to run daily? 【发布时间】:2021-09-27 17:56:32 【问题描述】:def job():
# Define variables
tickers = "AAPL GOOGL"
start = "2021-08-01"
end = date.today()
tickers_split = tickers.split()
df = pd.DataFrame()
tickers_split
for ticker in tickers_split:
data = pdr.get_data_yahoo(ticker, start=start, end=end, interval='d')
df[ticker] = data['Adj Close']
print(df.shape)
display(df)
df.to_csv(r'path.csv')
schedule.every().day.at("11:10").do(job)
while True:
schedule.run_pending()
time.sleep(1)
我有上面的代码来提取股票数据,然后将其保存在我的本地路径中,并希望使其每天在特定时间自动运行。我正在使用时间表,但它没有做它应该做的事情。我需要打开代码才能运行吗?如果是这样,执行 python 代码的选项是什么?让它们打开或让我的计算机一直保持清醒?
【问题讨论】:
【参考方案1】:您的操作系统可能为此提供了job scheduler(一个在后台运行并可以为您执行这些调度任务的应用程序)。
典型的工具是cron 用于 Mac 和 Linux,windows task scheduler 用于 Windows。您还可以查看其他可用的或更易于使用的包装器。
请务必注意,作业调度程序只能在您的计算机开启时运行。如果您需要可以 24/7 全天候运行的东西,您可能会寻找云提供商等,它们通常会提供自己的调度服务。
【讨论】:
我试图避免使用任务调度程序,正如你所说,cron 不适合我的系统。我希望时间表能奏效。我想知道为什么它不做它应该做的事情。 要启动一个程序,您必须有一个程序来确定是否该启动它,并执行代码来启动它。这意味着您需要一个在后台运行的程序,或者一个在后台运行的现有程序。另一个选项是launch the script on startup 并让脚本在后台运行。 See here 提供多种解决方案。 好的,我决定使用任务调度程序,但它不起作用。我一直在看网上的每一个解释,仍然是在指定时间启动 dsnt 的时间表。我在想是不是因为我在我的脚本中导入包?我发现的几乎所有示例都是没有导入的简单脚本。如果是这样,那么安装包的代码有哪些选项? 包应该可以工作。运行一个小脚本来隔离问题可能会有所帮助;如果小脚本正常工作,则意味着您的代码中存在错误。如果小脚本不起作用,则意味着您配置任务调度程序的方式存在问题。【参考方案2】:规定的方法是将 python 代码放入 AWS Lambda 中,然后让带有 cron 表达式的 AWS Cloudwatch 事件按计划调用 AWS Lambda,然后将结果保存在 S3 或某些数据存储中。
无论从运营角度还是从成本角度来看,以上都是最便宜的选择,因为您只需在 AWS Lambda 执行时为其付费。
【讨论】:
【参考方案3】:这个视频帮助我解决了同样的问题:
https://www.youtube.com/watch?v=aqnJvXOIr6g&ab_channel=KeithGalli
因为我不想让我的笔记本电脑一直运行,所以我使用了 AWS 设置。但我认为这也可以与其他托管选项一起使用,您可以在其中安装您的调度程序。
【讨论】:
以上是关于如何安排python代码每天运行?的主要内容,如果未能解决你的问题,请参考以下文章