将优化系统作为 Web 应用程序提供服务的良好实践

Good Practices to Serve Optimization System as Web App

我在做什么

我正在用遗传算法开发优化系统;刚刚在 JupyterNotebook 上完成 PoC,并将使用 Python3 作为 Web 应用程序提供服务。 这个优化过程需要大量的计算资源来评估每个候选染色体,所以我打算采用并行分布式处理。

如何运作

下面显示了这个系统将如何工作(正在计划中)。

  1. 用户从浏览器上传带有参数的文件并保留优化
  2. 系统对优化作业进行排队
  3. 系统在浏览器上显示预留作业列表和优化结果

我的计划和问题

这里显示我的计划(我对网络应用程序不熟悉)。

  1. 请求上传 API 并将参数保存在 DB 和 pickle 中
  2. 每 n 分钟使用 cron 检查是否有任何保留的优化作业
  3. 如果需要执行优化并将结果保存在数据库中并更新作业状态(等待 -> 完成)

我认为这会奏效,但我不确定这是否好。 您知道执行此操作的良好架构实践吗?

我认为拥有一个 cron 作业会使订单流程复杂化并且效率低下。尝试使用消息代理(例如 rabbit-mq)和芹菜来安排和 运行 作业。