我正在计划编写一个脚本,该脚本将每天午夜检查网站并根据用户输入执行所需的操作。我将把这个脚本发布到网上,以便其他人可以使用它。
但是,我希望即使用户计算机关闭,脚本也能够继续运行。是否有某个地方(我/用户)可以托管脚本,以便即使我/他们关闭计算机它仍然可以继续运行?
我脑海中立即浮现的想法是,或者将其托管在某种服务器上。这可能吗?
我也一直在阅读有关 cron 的内容。但是,在用户关闭计算机后,它似乎会停止工作。
如有任何提示或建议,我们将不胜感激。
是的,当您关闭计算机时,cron 就会停止运行。当没有电源时,一切都会停止运行。持久计算的一种选择是在 Amazon Web Services 上运行 EC2 实例。有一种实例类型是免费的(在某种程度上我相信)。其他云计算服务(例如 MS Azure)也是一种选择。
当计算机关闭时,不会发生任何事情,也不会执行任何脚本。
每天午夜执行脚本 CRON 就是你的方式。
通常这种脚本运行在一直运行的服务器上。
您是对的,即使用户的计算机关闭,脚本也能继续运行,将其托管在服务器上是一个理想的解决方案。在发布问题 8 年后,这里合适的选择可能是 GitHub Actions,它可以让您自动化工作流程,包括在特定时间运行脚本,而无需专用服务器。
以下是如何设置 GitHub Actions 以每天午夜运行脚本。
首先在 GitHub 上为您的项目创建一个存储库。该存储库将存储您的脚本和 GitHub Actions 的配置文件。
将要运行的脚本(我们称之为
script.py
)添加到存储库中。这是 GitHub Actions 每天都会执行的 Python 脚本。
在您的存储库中,在
.github/workflows/
下创建一个新文件,并将其命名为类似 daily-run.yml
的名称。此 YAML 文件将定义 GitHub Actions 的工作流程,告诉它何时以及如何运行脚本。
这是一个每天午夜运行
daily-run.yml
的示例 script.py
文件:
name: Daily Script Runner
on:
schedule:
# This cron syntax means "run at midnight every day"
- cron: "0 0 * * *"
jobs:
run-script:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run the script
run: |
python script.py
on: schedule
:定义工作流运行时间的计划。在此示例中,cron 语法 "0 0 * * *"
安排它在每天午夜运行。 crontab 是帮助您定义日程安排的实用参考。
jobs
:定义此工作流程中的不同作业。每个作业都在 Ubuntu 虚拟机上运行(每次运行后都会重置)。
签出和设置:前两个步骤签出您的存储库并设置Python(如果需要,您可以指定特定的Python版本)。
安装依赖项:如果您的脚本需要特定的包,请将它们列在
requirements.txt
文件中。 GitHub Actions 将在每次运行工作流程时安装它们。
运行脚本:最后这一步执行
script.py
。脚本的任何输出都将记录在 GitHub 上的作业日志中,以便您可以在每次运行后查看它们。
设置工作流程后,提交
daily-run.yml
文件和脚本并将其推送到存储库。 GitHub 会在预定的时间自动触发作业。
此解决方案将允许您的脚本按设定的时间表在 GitHub 的服务器上运行,因此用户不需要打开计算机。