1

每月一次,我需要在我的 Rails 应用程序中创建将近 40MB 的 XML 文件并保存该文件。作为存储,我使用 Amazon S3 平台。当我在本地主机(Webrick 服务器)上执行此任务时,此任务大约需要 5 分钟 => 文件保存在 Amazon 的存储桶中。所有人都很高兴。

但是当我在 Heroku 上运行这个任务时,应用程序没有响应 45 分钟,并且文件没有保存在亚马逊中。

我知道 heroku 只允许运行一个任务 30 秒,但是在这段时间之后会显示一条错误消息并且任务正在后台运行。虽然此操作是应用程序“空闲”。

但是,文件没有被创建和保存怎么可能呢?Heroku 对文件传输或类似的东西有任何限制吗?

我整个下午都在寻找问题,但直到现在都没有成功。提前致谢

4

1 回答 1

0

我很确定该进程在 30 秒后被终止,而不是按照您的建议在后台运行。使用delayed_job 获取后台,详见此处:https ://devcenter.heroku.com/articles/delayed-job 。如果你有一个创建和传输文件的方法,你可以使用delayed_job的延迟方法。请注意,delayed_job 会启动它自己的小环境。因此,在我的情况下,我将文件写入 tmp,然后将其传输到 S3,并注意所有工作都必须在同一个作业中完成,因为当第一个作业完成时,tmp 目录就会消失。

于 2013-03-01T23:49:23.133 回答