如何外包周期性任务(即在“云”中)?

时间:2009-01-09 06:19:25

标签: cron amazon-ec2 cloud vps webcron

假设客户对您完成的工作感到满意,该脚本创建了一个脚本来完成收集某些信息并输出大量数据库文件的任务。然后,他们有兴趣定期(大约每月一次)运行任务而无需人工干预。客户端对在本地运行任务不感兴趣,所以你不得不在其他地方找到它 - 在某个地方,就像它听起来的那样,“在云中。”

您可以使用哪些技术/服务来实现这一目标?

到目前为止我已经探索过的事情:

  • Amazon EC2。听起来不错,但没有明显的方法来按计划停止和重启实例。支付>每月70美元以保持实例运行cron但无所作为似乎是浪费。
  • 咬紧牙关并支付虚拟专用服务器(VPS)的费用。尽管如此,如果任务每个月只运行几个小时,即使每月支付20美元(例如Slicehost)也似乎有点过分。
  • 共享主机帐户和WebCron。看起来有点像MacGyverish并且可能违反许多共享托管服务的ToS,这些服务通常不会对长期运行的任务产生好感。

您是否有使用这些或任何其他选项的经验?

4 个答案:

答案 0 :(得分:7)

我会使用Amazon EC2。只需启动一个实例,将脚本复制到实例,将其添加到启动例程,并在脚本末尾附加关闭。将其捆绑到您自己的映像中并关闭实例。现在,您可以每月启动自己的映像,它将执行脚本并关闭。您只需支付10美分/小时的m1.small实例。

您只需要每月手动启动实例或让您的客户端安装一个小的月度cronjob来启动实例。

注意:shutdown -h是必需的,否则实例将重启而不是暂停

答案 1 :(得分:1)

我会咬紧牙关并获得一个VPS,6个月之后你几乎肯定会发现你已经找到了更多的用途。

我使用允许此功能的共享托管服务,并将其用于夜间同步。

答案 2 :(得分:0)

在EC2上运行任务本身听起来非常相关,但在EC2上运行cron本身确实是浪费。

我想不出如何在不属于你的机器上运行cron。

答案 3 :(得分:0)

您可以使用http://guardiano.pm而不是创建作业,并在需要时调用您的API。 Guradiano将打电话给你/ api / dothat,应用程序将执行一些任务。确保这一点的一个问题是发送一些带有请求的参数,并且只有在发送了正确的参数时才会执行操作。