如何在 CloudFoundry 中添加 cron 作业
How to add cron jobs in CloudFoundry
我在 CloudFoundry 中有几个 Python 应用程序。现在我想安排他们的执行时间。例如,必须在每个月的第二天执行一个特定的应用程序。
我在互联网上找不到任何东西。这可能吗?
Cloud Foundry 会将您的应用程序部署到容器中。您可以使用库按特定的时间表执行代码,但无论哪种方式,您都需要付费才能一直拥有该实例 运行。
您正在尝试做的是“serverless computing”(也称为 "event-driven" 或 "function as a service" 计算的完美候选。
这些部署技术在响应触发器时执行功能,例如REST api 调用、特定时间戳、新数据库插入等...
您可以使用 Openwhisk 无服务器计算平台执行您的 python Cloud Foundry 应用程序。
IBM 在其云平台 Bluemix.
上提供此 运行ning 的托管版本
我不知道你的代码是什么样的,所以我将使用这个示例 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 editor or the CLI.
将您的操作(函数)上传到 OpenWhisk
上传操作后,您可以使用警报包按特定计划自动执行这些操作。要在在线编辑器中执行此操作,请单击 "automate this process" 并选择警报包。
要通过 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 点触发。然后,我们需要通过创建规则 link 触发我们的操作:
$ wsk rule create regular_hello_rule regular_hello_world hello_world
ok: created rule regular_hello_rule
有关详细信息,请参阅 docs on creating python actions.
CloudFoundry 平台本身没有调度程序(至少目前没有),并且您应用 运行s 所在的容器没有安装 cron(不太可能永远发生)。
如果您想定期安排代码 运行,您有几个选择。
您可以部署包含调度程序的应用程序。调度程序可以直接在该容器中 运行 您的代码,也可以在其他地方触发代码 运行 (例如:它向另一个应用程序发送 HTTP 请求,该请求触发代码 运行 ).如果您在其他地方触发代码 运行,您可以使调度程序应用 运行 非常精简(可能只有 64m 内存或更少)以降低成本。
您可以寻找第三方调度程序服务。此类服务的可用性和成本将因您的 CF 提供商而异,但有一些服务产品可以处理日程安排。它们的功能通常类似于前面的示例,其中在特定时间将 HTTP 请求发送到您的应用程序并触发您的计划代码。许多服务提供商提供免费套餐,每月免费提供少量触发器。
如果您有安装了 cron 的 CF 之外的服务器,您可以在那里使用 cron 来安排任务并在 CF 上触发代码 运行。您可以像前面的示例一样通过向您的应用程序发送 HTTP 请求来执行此操作,但是,此选项还使您可以使用 CloudFoundry 的任务功能。
CloudFoundry有任务的概念,就是一次性执行一些代码。有了它,你可以执行cf run-task
命令来触发任务到运行。例如:cf run-task <app-name> "python my-task.py"
。更多关于文档,here。使用任务的好处是您的提供商只会在任务 运行ning 时向您收费。
要查看您的提供商是否有可用任务,运行 cf feature-flags
并查看 task_creation
是否设置为 enabled
。
希望对您有所帮助!
我在 CloudFoundry 中有几个 Python 应用程序。现在我想安排他们的执行时间。例如,必须在每个月的第二天执行一个特定的应用程序。 我在互联网上找不到任何东西。这可能吗?
Cloud Foundry 会将您的应用程序部署到容器中。您可以使用库按特定的时间表执行代码,但无论哪种方式,您都需要付费才能一直拥有该实例 运行。
您正在尝试做的是“serverless computing”(也称为 "event-driven" 或 "function as a service" 计算的完美候选。
这些部署技术在响应触发器时执行功能,例如REST api 调用、特定时间戳、新数据库插入等...
您可以使用 Openwhisk 无服务器计算平台执行您的 python Cloud Foundry 应用程序。
IBM 在其云平台 Bluemix.
上提供此 运行ning 的托管版本我不知道你的代码是什么样的,所以我将使用这个示例 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 editor or the CLI.
将您的操作(函数)上传到 OpenWhisk上传操作后,您可以使用警报包按特定计划自动执行这些操作。要在在线编辑器中执行此操作,请单击 "automate this process" 并选择警报包。 要通过 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 点触发。然后,我们需要通过创建规则 link 触发我们的操作:
$ wsk rule create regular_hello_rule regular_hello_world hello_world
ok: created rule regular_hello_rule
有关详细信息,请参阅 docs on creating python actions.
CloudFoundry 平台本身没有调度程序(至少目前没有),并且您应用 运行s 所在的容器没有安装 cron(不太可能永远发生)。
如果您想定期安排代码 运行,您有几个选择。
您可以部署包含调度程序的应用程序。调度程序可以直接在该容器中 运行 您的代码,也可以在其他地方触发代码 运行 (例如:它向另一个应用程序发送 HTTP 请求,该请求触发代码 运行 ).如果您在其他地方触发代码 运行,您可以使调度程序应用 运行 非常精简(可能只有 64m 内存或更少)以降低成本。
您可以寻找第三方调度程序服务。此类服务的可用性和成本将因您的 CF 提供商而异,但有一些服务产品可以处理日程安排。它们的功能通常类似于前面的示例,其中在特定时间将 HTTP 请求发送到您的应用程序并触发您的计划代码。许多服务提供商提供免费套餐,每月免费提供少量触发器。
如果您有安装了 cron 的 CF 之外的服务器,您可以在那里使用 cron 来安排任务并在 CF 上触发代码 运行。您可以像前面的示例一样通过向您的应用程序发送 HTTP 请求来执行此操作,但是,此选项还使您可以使用 CloudFoundry 的任务功能。
CloudFoundry有任务的概念,就是一次性执行一些代码。有了它,你可以执行cf run-task
命令来触发任务到运行。例如:cf run-task <app-name> "python my-task.py"
。更多关于文档,here。使用任务的好处是您的提供商只会在任务 运行ning 时向您收费。
要查看您的提供商是否有可用任务,运行 cf feature-flags
并查看 task_creation
是否设置为 enabled
。
希望对您有所帮助!