当大型资源创建请求超时时会发生什么?

时间:2016-07-29 17:59:53

标签: ruby-on-rails postgresql

我们假设我们有一个PostsController和一个Post模型,它有多个图像。

此图片是在after_save回调中创建的。

现在我们有一个巨大的请求,附带20个编码图像,当回调处于其中间时,它会超时。

现在的状态是什么?

  • 帖子是否存储在数据库中?

  • 创建图像的位置?

  • 如果图片是在before_save回调中创建的,它会改变什么吗?

1 个答案:

答案 0 :(得分:0)

数据库事务将在after_commit以外的任何回调中回滚。在提交数据库事务之前,它不会保留在磁盘上。

如果让我们说在超时之前处理了一半的图像,那么将处理那一半的图像。真的没有办法回滚。

以下是available callbacks的链接及其运行顺序。

最后,最好通过Active Job异步运行图像处理,这样您就不太可能遇到超时问题。