我应该使用 django-celery 递归更新我的数据库吗?
Should I use django-celery to update my DB recursively?
几天来我一直在思考最好的方法是什么。
我正在销售我正在制造的商品
但是我出售的商品可以由其他商品组成
其他项目可以由其他项目组成,依此类推。
创建销售订单后,我想触发创建构建此项目所需的所有项目的内部销售订单的过程,因此它应该是某种递归。
无法生产的最终物品有一个标志 is_production=False 所以我知道我不必更深入
为此,我想在 view.py 中创建一个方法,该方法将在确认我的销售订单时触发。但我担心,由于我无法预测所制造产品的复杂性,这将需要很长时间,而且性能会很昂贵。同样存在永无止境循环的风险。
所以可能在视图中这样做不是一个好主意,我正在考虑替代方案并且通过调查我做了它应该用像 django-celery
这样的东西来实现
问题,因为我以前从未使用过django celery,我想确认一下我的理解:
django-celery 是解决我的要求的最佳且唯一的选择吗?
首先,关于应用程序设计问题:正如您所说,"doing it in the view is not a great idea"...一般来说,您必须避免 运行 在请求-响应周期中需要大量时间的进程,这很糟糕对于 UX,可能会因为某个层的超时而导致请求中止(考虑数据库事务超时、应用程序容器超时、反向代理超时等)。
我的建议:使用某些东西(Celery 或任何其他解决方案)来卸载创建内部销售订单的流程,以及任何其他耗时 运行 的流程(例如发送电子邮件)。
第二:用什么框架?选项太多了……您需要研究一下:-)
第三:永无止境的循环。无论要使用何种设计,您都必须解决这个问题。
几天来我一直在思考最好的方法是什么。
我正在销售我正在制造的商品 但是我出售的商品可以由其他商品组成 其他项目可以由其他项目组成,依此类推。
创建销售订单后,我想触发创建构建此项目所需的所有项目的内部销售订单的过程,因此它应该是某种递归。
无法生产的最终物品有一个标志 is_production=False 所以我知道我不必更深入
为此,我想在 view.py 中创建一个方法,该方法将在确认我的销售订单时触发。但我担心,由于我无法预测所制造产品的复杂性,这将需要很长时间,而且性能会很昂贵。同样存在永无止境循环的风险。 所以可能在视图中这样做不是一个好主意,我正在考虑替代方案并且通过调查我做了它应该用像 django-celery
这样的东西来实现问题,因为我以前从未使用过django celery,我想确认一下我的理解: django-celery 是解决我的要求的最佳且唯一的选择吗?
首先,关于应用程序设计问题:正如您所说,"doing it in the view is not a great idea"...一般来说,您必须避免 运行 在请求-响应周期中需要大量时间的进程,这很糟糕对于 UX,可能会因为某个层的超时而导致请求中止(考虑数据库事务超时、应用程序容器超时、反向代理超时等)。
我的建议:使用某些东西(Celery 或任何其他解决方案)来卸载创建内部销售订单的流程,以及任何其他耗时 运行 的流程(例如发送电子邮件)。
第二:用什么框架?选项太多了……您需要研究一下:-)
第三:永无止境的循环。无论要使用何种设计,您都必须解决这个问题。