【问题标题】:Python script scheduling on google cloud谷歌云上的 Python 脚本调度
【发布时间】:2021-12-15 01:39:00
【问题描述】:

我正面临这个问题,我有一个 python 脚本需要每天早上 00:00 在谷歌云上运行,可能使用谷歌云运行,我想知道的是我非常具体的东西找不到好的答案,问题是... 哪种方式在技术上最适合实现这一目标?让云在特定时间触发特定脚本会更好吗?或者最好有一个始终运行的容器,它等待(使用锁)一天中的某个时间,然后运行一个函数。 脚本面临的任务相当繁重,它会扫描图片并尝试从中获取纯文本(图片是从 Instagram 页面下载的)。

因为我从来没有在云环境中实现过这样的事情,所以我需要知道的归结为:
与云处理的调度程序(例如 Google Cloud Scheduler)相比,“锁定等待”脚本有多重,从经济上讲,在执行像我的脚本中的任务这样繁重的任务时,这有什么关系吗?

【问题讨论】:

    标签: python google-cloud-platform google-cloud-run google-cloud-scheduler python-sched


    【解决方案1】:

    我认为Cloud Scheduler 可能是一个很好的第一个解决方案/方法。例如,它可以发出一些 http 请求,或将消息推送到 pubsub(可用作脚本的拉取或推送触发器)。

    根据脚本,我了解所有必需的功能。它可以通过多种不同的方式实现 - Cloud Function(或一组不同的 Cloud Functions 协同工作以归档一个目标)、Cloud Run 或其他任何方式。

    我通常的个人偏好是模式 Cloud Scheduler => PubSub Topic => push Cloud Function。其他人可能更喜欢其他变体。

    在您的情况下,解决方案(包括“脚本”实现)的选择 - 我认为 - 取决于开发和维护解决方案的人员的功能和非功能要求、上下文、范围、技能和知识、时间, CAPEX 和 OPEX 预算等。

    【讨论】:

    • 所以你在这里的建议基本上是有一个云功能来触发一些运行 to be scheduled 脚本的应用程序/容器(通过 http/pubsub),我说得对吗?但是,如果我必须让我的脚本始终监听例如 http 调用,那么在 python 的情况下使用类似pypi.org/project/schedule 的东西来安排脚本不是更好吗?非常感谢。
    • 不是真的...这个想法是云函数不应该触发某些东西(即脚本,容器等),但功能脚本要实现为云函数(或组云功能协同工作)。或者脚本将被实现为云运行......等等。简而言之,“脚本”(或所需的任何功能)将从 pub/sub 主题触发 - 使用拉订阅或推送。
    • 非常感谢,现在它更清晰了,我认为这是我将为这个和未来项目采用的解决方案。
    【解决方案2】:

    不知道这在技术上是否是最好的,但我会结合使用 Cloud Run 和 Cloud Scheduler(我们目前正在为我们的一个项目运行这种组合)。

    Cloud Run,因为您的脚本似乎每天只运行一次,而且 Cloud Run 在不处理请求时基本上会进入睡眠状态。这降低了总体成本,即它在收到请求时唤醒,执行请求并重新进入睡眠状态(睡眠时不向您收费)。

    Cloud Scheduler 在凌晨 00:00 触发 Cloud Run 上的 url 端点。顾名思义 - 调度程序 - 安排作业在特定时间运行。

    我还建议保护您的 url 端点(将部署在 Cloud Run 上的端点)。这确保只有您的 Cloud Scheduler 是触发 url 的人(除非他们具有必要的权限,否则不能“错误地”通过 Internet 访问 url 并触发作业)。我们有一个关于如何做到这一点的博客article

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 2017-07-21
      • 2018-11-25
      • 2021-03-16
      • 2015-04-19
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多