大型资源创建请求超时时会发生什么情况?
问题描述:
比方说,我们有一个PostsController
和一个Post
模型有多个图像。大型资源创建请求超时时会发生什么情况?
这个图像是在after_save
回调中创建的。
现在我们有一个巨大的请求,带有20个编码图像,当回调处于执行过程中时,这些图像会超时。
现在是什么状态?
该帖子是否存储在数据库中?
哪里有图像创建?
如果图像是在
before_save
回调中创建的,它会改变什么吗?
答
数据库事务将在除after_commit
以外的任何回调中回滚。在数据库事务提交之前,它不会保存到磁盘上。
如果假设在超时之前处理了一半图像,那么将处理该图像的一半。真的没有办法让它回滚。
以下是available callbacks的链接及其运行顺序。
最后,最好通过Active Job异步运行图像处理,这样你就不太可能遇到超时问题。
这些图像究竟发生了什么? –