我已经在思考几天最好的方法了。
我正在销售我正在制造的物品 但是我销售的商品可以由其他商品组成 那些其他项目可以由其他项目组成,等等。
创建销售订单后,我想触发流程创建构建此项目所需的所有项目的内部销售订单,因此它应该是某种递归。
无法生成的最终项目有一个标志is_production = False所以我知道我不必深入了
为此我想在view.py中创建一个方法,该方法将通过确认我的销售订单来触发。但是我担心,因为我无法预测产品制造的复杂性,所以它将花费很长时间并且性能成本很高。同样存在永无止境循环的风险。 所以可能在视图中这样做并不是一个好主意,我正在考虑替代方案,通过调查我做了它应该用django-celery
之类的东西来实现问题,因为我之前从未使用过django芹菜,我想证实我的理解: django-celery是解决我需求的最佳选择吗?
答案 0 :(得分:1)
首先,关于应用程序设计问题:正如你所说,“在视图中执行它并不是一个好主意”...一般来说,你必须避免在请求 - 响应周期中运行需要很多时间的进程,这是对于UX来说很糟糕,并且可能因请求被中止而结束,因为某个层上的超时(想想数据库事务超时,应用程序容器超时,反向代理超时等)。
我的建议:使用某些东西(Celery或任何其他解决方案)来卸载创建内部销售订单的流程以及任何其他长时间运行的流程(例如发送电子邮件)。
第二:使用哪个框架?有很多选择......你需要研究: - )
第三:永无止境的循环。无论要使用哪种设计,你都必须解决这个问题。