如何在CloudFoundry中添加cron作业

2024-05-14 08:59:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在CloudFoundry有几个Python应用程序。现在我想安排他们的处决。例如,一个特定的应用程序必须在每个月的第二天执行。 我在网上找不到任何东西。有可能吗?在


Tags: 应用程序cloudfoundry
2条回答

CloudFoundry将在容器中部署应用程序。您可以使用库来按特定的时间表执行代码,但无论哪种方式,您都要付费让该实例一直运行。在

您要做的是“serverless computing”(也称为“事件驱动”或“函数即服务”计算)的完美候选。在

这些部署技术在响应触发器时执行函数,例如restapi调用、特定的时间戳、新的数据库插入等等。。。在

您可以使用Openwhisk无服务器计算平台执行python cloud foundry应用程序。在

IBM提供了一个运行在其云平台Bluemix上的托管版本。在

我不知道您的代码是什么样子的,所以我将使用以下示例hello world函数:

import sys

def main(dict):
    if 'message' in dict:
        name = dict['message']
    else:
        name = 'stranger'
    greeting = 'Hello ' + name + '!'
    print(greeting)
    return {'greeting':greeting}

您可以使用online editorCLI将操作(函数)上载到OpenWhisk。在

一旦你上传了你的动作,你就可以通过使用报警软件包在特定的时间表上自动执行它们。要在联机编辑器中执行此操作,请单击“自动执行此过程”并选择报警包。 要通过CLI执行此操作,我们需要首先创建一个触发器:

^{pr2}$

每天早上9点都会触发。然后,我们需要通过创建一个规则将此触发器链接到我们的操作:

$ wsk rule create regular_hello_rule regular_hello_world hello_world
ok: created rule regular_hello_rule

有关详细信息,请参阅docs on creating python actions.

CloudFoundry平台本身没有调度器(至少目前没有),并且应用程序运行的容器没有安装cron(不太可能发生)。在

如果您想安排程式码定期执行,您有几个选项。在

  • 您可以部署包含调度程序的应用程序。调度器可以直接在该容器中运行您的代码,也可以触发代码在其他地方运行(例如:它向另一个应用程序发送一个HTTP请求,该请求触发代码运行)。如果您触发代码在其他地方运行,您可以使调度程序应用程序运行得非常精简(可能有64m或更少的内存),以降低成本。

  • 您可以寻找第三方调度程序服务。这类服务的可用性和成本将因您的CF提供商而异,但也有一些服务可以处理日程安排。它们的功能通常与前面的示例类似,即在特定时间向应用程序发送HTTP请求,并触发计划的代码。许多服务提供商提供免费的分层,每月免费为您提供少量触发器。

  • 如果您在CF之外的服务器上安装了cron,则可以在那里使用cron来计划任务并触发在CF上运行的代码。您可以像前面的示例一样通过向您的应用程序发送HTTP请求来完成此操作,但是,此选项还允许您使用CloudFoundry的任务功能。

CloudFoundry有一个任务的概念,它是一些代码的一次性执行。使用它,您可以执行cf run-task命令来触发任务的运行。例如:cf run-task <app-name> "python my-task.py"。在文档中有更多的内容,here。使用任务的好处在于,你的提供者只会在任务运行时给你开账单。在

若要查看提供程序是否有可用任务,请运行cf feature-flags,然后查看task_creation是否设置为enabled。在

希望有帮助!在

相关问题 更多 >

    热门问题