我正在制作棒球模拟器应用程序与Dash。它使用SGD模型来模拟阵容和投手之间的游戏玩法。app (在建)可以在这里找到:https://capstone-baseball-simulator.herokuapp.com/和回购:https://github.com/c-fried/capstone_heroku
总结问题:我希望能够在heroku服务器上运行阵容优化器。
这可能有两个部分:1。运行实际的函数,同时避免超时。,2.
显示函数运行的进度。解决这个问题有几个问题:
- 该函数开销较大,在30秒超时前无法完成。(需要几分钟才能完成)
为此,我试图通过创建worker.py
(仍在repo中)来遵循这些说明(https://devcenter.heroku.com/articles/python-rq),将函数移动到外部.py
…等。我认为问题在于这个过程仍然花了太长时间,因此终止了。
- 我(故意)使用
global
变量在函数中工作时,我在本地运行,但不工作时部署(原因我有点理解-工人不共享内存https://dash.plotly.com/sharing-data-between-callbacks)
我正在使用global
,以便能够看到函数在运行时所做的实时更新。同样,作为本地黑客工作,但不能在服务器上工作。我不知道如果没有某种全局操作,我还能怎么观察函数的进程。我很想有一个聪明的解决办法,但是我想不出来。
我对web应用程序没有经验,所以提前感谢你的建议。
解决这个问题的一个常见方法是:
- 异步运行长计算,例如使用后台服务
- 完成后,将结果放入共享存储空间,例如redis缓存或S3桶
- 检查使用
Interval
组件或Websocket
组件的更新
我可以推荐芹菜来跟踪任务。