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

问题描述:

比方说,我们有一个PostsController和一个Post模型有多个图像。大型资源创建请求超时时会发生什么情况?

这个图像是在after_save回调中创建的。

现在我们有一个巨大的请求,带有20个编码图像,当回调处于执行过程中时,这些图像会超时。

现在是什么状态?

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

  • 哪里有图像创建?

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

+0

这些图像究竟发生了什么? –

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

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

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

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