在 Cloud Foundry 中按 Rails 安排邮件批次
Schedule Mail batch by Rails in Cloud Foundry
我想像CRON一样在特定时间批量发送邮件。
我认为每当 gem (https://github.com/javan/whenever) 不适合 Cloud Foundry 环境。因为 Cloud Foundry 不能使用 crontab。
请告知我可以使用哪些选项。
有一个 node.js 应用 here 可以用来安排特定的抽成任务。
我没有使用过 cloudfare,所以我不确定它是否能满足您的需求,但您也可以尝试一些批处理作业处理工具 rails 可用:Delayed job and sidekiq. Those store data for recurring jobs either on your database (DJ) or in a separate redis database (Sidekiq) and both need keeping extra processes up and running, so review them deeply and the changes you'd need for your deployment process before using each one. There's also resque, and here's a tutorial to use it with rails for scheduling tasks.
这里有多种解决方案,但简短的回答是,无论您最终做什么,都需要实现自己的调度程序。这是因为在 CF 上 运行s 时,您的应用程序没有可用的 cron 服务。这意味着没有什么可以触发或安排您的操作。任何依赖于 cron 的项目或解决方案在部署到 CF 时都将不起作用。任何实现自己的调度程序的项目都应该可以正常工作。
我见过人们成功完成的一些具体事情:
使用 Web 服务按预定义的时间间隔向您的应用程序发送 HTTP 请求。这些请求会触发您的操作。服务负责让您定义何时触发和发送 HTTP 请求。我有意避免提及任何特定服务,但您可以通过搜索 "cron http service" 或类似内容找到它们。
正在导入具有类似 cron 功能的库。我对Ruby不熟悉,所以不了解那里的风景。 @mlabarca 提到了一些你可以尝试的。再次查看它们是否实现了调度功能并且 不 依赖于 cron。我更熟悉 Java 那里有 Quartz 和 Spring,它也有一些调度功能。
实施 "clock" 进程或调度程序。这通常是您在 CF 上部署的第二个应用程序。它将是轻量级的,并且可能没有 Web 界面。它可以像做某事一样简单,睡觉,循环永远重复这两个步骤。这真的取决于你的需要。您甚至可以想象并实现类似上面第一个选项的东西,您可以向其他应用程序发送某种请求以触发实际事件。
可能还有其他解决方案,这些只是帮助您入门的一些示例。
大概也值得一提的是Cloud Controller v3 API will have first class features to run tasks。在这种情况下,"task" 是一些 运行 在有限时间内退出的作业(如批处理作业)。这与标准 "app" 相反,当 运行 在 CF 上应该永远继续执行(即如果它退出,它是崩溃的原因)。也就是说,我认为它不会包含调度程序,因此您仍然需要一些东西来触发任务。
我想像CRON一样在特定时间批量发送邮件。
我认为每当 gem (https://github.com/javan/whenever) 不适合 Cloud Foundry 环境。因为 Cloud Foundry 不能使用 crontab。
请告知我可以使用哪些选项。
有一个 node.js 应用 here 可以用来安排特定的抽成任务。
我没有使用过 cloudfare,所以我不确定它是否能满足您的需求,但您也可以尝试一些批处理作业处理工具 rails 可用:Delayed job and sidekiq. Those store data for recurring jobs either on your database (DJ) or in a separate redis database (Sidekiq) and both need keeping extra processes up and running, so review them deeply and the changes you'd need for your deployment process before using each one. There's also resque, and here's a tutorial to use it with rails for scheduling tasks.
这里有多种解决方案,但简短的回答是,无论您最终做什么,都需要实现自己的调度程序。这是因为在 CF 上 运行s 时,您的应用程序没有可用的 cron 服务。这意味着没有什么可以触发或安排您的操作。任何依赖于 cron 的项目或解决方案在部署到 CF 时都将不起作用。任何实现自己的调度程序的项目都应该可以正常工作。
我见过人们成功完成的一些具体事情:
使用 Web 服务按预定义的时间间隔向您的应用程序发送 HTTP 请求。这些请求会触发您的操作。服务负责让您定义何时触发和发送 HTTP 请求。我有意避免提及任何特定服务,但您可以通过搜索 "cron http service" 或类似内容找到它们。
正在导入具有类似 cron 功能的库。我对Ruby不熟悉,所以不了解那里的风景。 @mlabarca 提到了一些你可以尝试的。再次查看它们是否实现了调度功能并且 不 依赖于 cron。我更熟悉 Java 那里有 Quartz 和 Spring,它也有一些调度功能。
实施 "clock" 进程或调度程序。这通常是您在 CF 上部署的第二个应用程序。它将是轻量级的,并且可能没有 Web 界面。它可以像做某事一样简单,睡觉,循环永远重复这两个步骤。这真的取决于你的需要。您甚至可以想象并实现类似上面第一个选项的东西,您可以向其他应用程序发送某种请求以触发实际事件。
可能还有其他解决方案,这些只是帮助您入门的一些示例。
大概也值得一提的是Cloud Controller v3 API will have first class features to run tasks。在这种情况下,"task" 是一些 运行 在有限时间内退出的作业(如批处理作业)。这与标准 "app" 相反,当 运行 在 CF 上应该永远继续执行(即如果它退出,它是崩溃的原因)。也就是说,我认为它不会包含调度程序,因此您仍然需要一些东西来触发任务。