Python 如何在CloudFoundry中添加cron作业

Python 如何在CloudFoundry中添加cron作业,python,cloud-foundry,Python,Cloud Foundry,我在CloudFoundry中有几个Python应用程序。现在我想安排他们的执行时间。例如,一个特定的应用程序必须在每个月的第二天执行。 我在网上找不到任何东西。这可能吗?CloudFoundry将在容器中部署您的应用程序。您可以使用库按照特定的时间表执行代码,但无论哪种方式,您都需要花钱让该实例一直运行 您试图做的是一个完美的“”(也称为“事件驱动”或“功能即服务”计算)候选对象 这些部署技术在响应触发器时执行功能,例如REST api调用、特定时间戳、新的数据库插入等 您可以使用无服务器计算

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

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

您试图做的是一个完美的“”(也称为“事件驱动”或“功能即服务”计算)候选对象

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

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

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

我不知道您的代码是什么样子,因此我将使用以下示例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}
您可以使用或将操作(函数)上载到OpenWhisk

上传操作后,您可以使用报警包按照特定计划自动执行操作。要在联机编辑器中执行此操作,请单击“自动执行此过程”,然后选择报警包。 要通过CLI执行此操作,我们需要首先创建触发器:

$ wsk trigger create regular_hello_world --feed /whisk.system/alarms/alarm -p cron '0 0 9 * * *'
ok: created trigger feed regular_hello_world
这将在每天上午9点触发。然后,我们需要通过创建规则将此触发与我们的操作相链接:

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

有关更多信息,请参见

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

如果您想安排代码定期运行,您有几个选项

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

  • 您可以查找第三方计划程序服务。此类服务的可用性和成本将因您的CF提供商而异,但有一些服务可用于处理计划。这些服务的功能通常与上一个示例类似,其中HTTP请求在特定时间发送到您的应用程序,并触发您的计划许多服务提供商提供免费的分层服务,每月免费为您提供少量触发器

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

CloudFoundry有一个任务的概念,它是一些代码的一次性执行。使用它,您可以执行
cf run task
命令来触发任务运行。例如:
cf run task。使用任务的好处在于,您的提供商只会在任务运行时向您计费

要查看您的提供商是否有可用的任务,请运行
cf feature flags
,并查看
task\u creation
是否设置为
enabled


希望能有所帮助!

谢谢你的回答。你有第三方调度程序的例子吗?谢谢。我在PWS上使用过此服务: