将优化系统作为 Web 应用程序提供服务的良好实践
Good Practices to Serve Optimization System as Web App
我在做什么
我正在用遗传算法开发优化系统;刚刚在 JupyterNotebook 上完成 PoC,并将使用 Python3 作为 Web 应用程序提供服务。
这个优化过程需要大量的计算资源来评估每个候选染色体,所以我打算采用并行分布式处理。
如何运作
下面显示了这个系统将如何工作(正在计划中)。
- 用户从浏览器上传带有参数的文件并保留优化
- 系统对优化作业进行排队
- 系统在浏览器上显示预留作业列表和优化结果
我的计划和问题
这里显示我的计划(我对网络应用程序不熟悉)。
- 请求上传 API 并将参数保存在 DB 和 pickle 中
- 每 n 分钟使用 cron 检查是否有任何保留的优化作业
- 如果需要执行优化并将结果保存在数据库中并更新作业状态(等待 -> 完成)
我认为这会奏效,但我不确定这是否好。
您知道执行此操作的良好架构实践吗?
我认为拥有一个 cron 作业会使订单流程复杂化并且效率低下。尝试使用消息代理(例如 rabbit-mq)和芹菜来安排和 运行 作业。
我在做什么
我正在用遗传算法开发优化系统;刚刚在 JupyterNotebook 上完成 PoC,并将使用 Python3 作为 Web 应用程序提供服务。 这个优化过程需要大量的计算资源来评估每个候选染色体,所以我打算采用并行分布式处理。
如何运作
下面显示了这个系统将如何工作(正在计划中)。
- 用户从浏览器上传带有参数的文件并保留优化
- 系统对优化作业进行排队
- 系统在浏览器上显示预留作业列表和优化结果
我的计划和问题
这里显示我的计划(我对网络应用程序不熟悉)。
- 请求上传 API 并将参数保存在 DB 和 pickle 中
- 每 n 分钟使用 cron 检查是否有任何保留的优化作业
- 如果需要执行优化并将结果保存在数据库中并更新作业状态(等待 -> 完成)
我认为这会奏效,但我不确定这是否好。 您知道执行此操作的良好架构实践吗?
我认为拥有一个 cron 作业会使订单流程复杂化并且效率低下。尝试使用消息代理(例如 rabbit-mq)和芹菜来安排和 运行 作业。