哪里可以托管连续运行的脚本?

问题描述 投票:0回答:3

我正在计划编写一个脚本,该脚本将每天午夜检查网站并根据用户输入执行所需的操作。我将把这个脚本发布到网上,以便其他人可以使用它。

但是,我希望即使用户计算机关闭,脚本也能够继续运行。是否有某个地方(我/用户)可以托管脚本,以便即使我/他们关闭计算机它仍然可以继续运行?

我脑海中立即浮现的想法是,或者将其托管在某种服务器上。这可能吗?

我也一直在阅读有关 cron 的内容。但是,在用户关闭计算机后,它似乎会停止工作。

如有任何提示或建议,我们将不胜感激。

cron server
3个回答
2
投票

是的,当您关闭计算机时,cron 就会停止运行。当没有电源时,一切都会停止运行。持久计算的一种选择是在 Amazon Web Services 上运行 EC2 实例。有一种实例类型是免费的(在某种程度上我相信)。其他云计算服务(例如 MS Azure)也是一种选择。


0
投票

当计算机关闭时,不会发生任何事情,也不会执行任何脚本。

每天午夜执行脚本 CRON 就是你的方式。

通常这种脚本运行在一直运行的服务器上。


0
投票

您是对的,即使用户的计算机关闭,脚本也能继续运行,将其托管在服务器上是一个理想的解决方案。在发布问题 8 年后,这里合适的选择可能是 GitHub Actions,它可以让您自动化工作流程,包括在特定时间运行脚本,而无需专用服务器。

以下是如何设置 GitHub Actions 以每天午夜运行脚本。

第 1 步:创建 GitHub 存储库

首先在 GitHub 上为您的项目创建一个存储库。该存储库将存储您的脚本和 GitHub Actions 的配置文件。

第 2 步:添加脚本

将要运行的脚本(我们称之为

script.py
)添加到存储库中。这是 GitHub Actions 每天都会执行的 Python 脚本。

第 3 步:设置 GitHub Actions 工作流程

在您的存储库中,在

.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

说明

  1. on: schedule
    :定义工作流运行时间的计划。在此示例中,cron 语法
    "0 0 * * *"
    安排它在每天午夜运行。 crontab 是帮助您定义日程安排的实用参考。

  2. jobs
    :定义此工作流程中的不同作业。每个作业都在 Ubuntu 虚拟机上运行(每次运行后都会重置)。

  3. 签出和设置:前两个步骤签出您的存储库并设置Python(如果需要,您可以指定特定的Python版本)。

  4. 安装依赖项:如果您的脚本需要特定的包,请将它们列在

    requirements.txt
    文件中。 GitHub Actions 将在每次运行工作流程时安装它们。

  5. 运行脚本:最后这一步执行

    script.py
    。脚本的任何输出都将记录在 GitHub 上的作业日志中,以便您可以在每次运行后查看它们。

第 4 步:提交并推送

设置工作流程后,提交

daily-run.yml
文件和脚本并将其推送到存储库。 GitHub 会在预定的时间自动触发作业。

参考文献和进一步阅读

此解决方案将允许您的脚本按设定的时间表在 GitHub 的服务器上运行,因此用户不需要打开计算机。

© www.soinside.com 2019 - 2024. All rights reserved.