如何 运行 长后台进程 - Heroku App - Dash Python
How to run long background processes - Heroku App - Dash Python
我正在使用 Dash 开发 棒球模拟器 应用程序。它使用 SGD 模型来模拟阵容和投手之间的游戏玩法。该应用程序(正在建设中)可以在这里找到:https://capstone-baseball-simulator.herokuapp.com/ and the repo: https://github.com/c-fried/capstone_heroku
总结一下这个问题:我希望能够在 heroku 服务器上运行阵容优化器。
这可能有两个部分:1. 运行 避免超时的实际功能。 & 2. 运行ning.
显示函数进度
我在解决这个问题时遇到了几个问题:
- 该功能开销很大,无法在 30 秒超时前完成。 (需要几分钟才能完成。)
为此,我尝试按照这些说明 (https://devcenter.heroku.com/articles/python-rq) 创建一个 worker.py
(仍在回购中),将函数移动到外部 .py
...等等我认为问题是该过程仍然花费太长时间并因此终止。
- 我(有意地)在函数中使用了一个
global
变量,它在我 运行 本地时有效,但在部署时不起作用(出于我有点理解的原因 - 工人不共享内存 https://dash.plotly.com/sharing-data-between-callbacks)
我正在使用 global
来查看函数正在执行的操作的实时更新,因为它是 运行ning。同样,在本地作为黑客工作,但在服务器上不起作用。我不知道在没有某种全局操作的情况下我还能如何观察函数的进度。我想要一个聪明的解决方案,但我想不出。
我没有使用网络应用程序的经验,所以提前感谢您的建议。
解决这个问题的常用方法是,
- 运行 异步长计算,例如使用 background service
- 完成后,将结果放入共享存储space,例如Redis 缓存或 S3 存储桶
- 使用
Interval
组件或 Websocket
组件检查更新
我可以推荐 Celery 来跟踪任务。
我正在使用 Dash 开发 棒球模拟器 应用程序。它使用 SGD 模型来模拟阵容和投手之间的游戏玩法。该应用程序(正在建设中)可以在这里找到:https://capstone-baseball-simulator.herokuapp.com/ and the repo: https://github.com/c-fried/capstone_heroku
总结一下这个问题:我希望能够在 heroku 服务器上运行阵容优化器。
这可能有两个部分:1. 运行 避免超时的实际功能。 & 2. 运行ning.
显示函数进度我在解决这个问题时遇到了几个问题:
- 该功能开销很大,无法在 30 秒超时前完成。 (需要几分钟才能完成。)
为此,我尝试按照这些说明 (https://devcenter.heroku.com/articles/python-rq) 创建一个 worker.py
(仍在回购中),将函数移动到外部 .py
...等等我认为问题是该过程仍然花费太长时间并因此终止。
- 我(有意地)在函数中使用了一个
global
变量,它在我 运行 本地时有效,但在部署时不起作用(出于我有点理解的原因 - 工人不共享内存 https://dash.plotly.com/sharing-data-between-callbacks)
我正在使用 global
来查看函数正在执行的操作的实时更新,因为它是 运行ning。同样,在本地作为黑客工作,但在服务器上不起作用。我不知道在没有某种全局操作的情况下我还能如何观察函数的进度。我想要一个聪明的解决方案,但我想不出。
我没有使用网络应用程序的经验,所以提前感谢您的建议。
解决这个问题的常用方法是,
- 运行 异步长计算,例如使用 background service
- 完成后,将结果放入共享存储space,例如Redis 缓存或 S3 存储桶
- 使用
Interval
组件或Websocket
组件检查更新
我可以推荐 Celery 来跟踪任务。