如何运行长后台进程- Heroku App - Dash Python



我正在制作棒球模拟器应用程序与Dash。它使用SGD模型来模拟阵容和投手之间的游戏玩法。app (在建)可以在这里找到:https://capstone-baseball-simulator.herokuapp.com/和回购:https://github.com/c-fried/capstone_heroku

总结问题:我希望能够在heroku服务器上运行阵容优化器

这可能有两个部分:1。运行实际的函数,同时避免超时。,2.

显示函数运行的进度。

解决这个问题有几个问题:

  1. 该函数开销较大,在30秒超时前无法完成。(需要几分钟才能完成)

为此,我试图通过创建worker.py(仍在repo中)来遵循这些说明(https://devcenter.heroku.com/articles/python-rq),将函数移动到外部.py…等。我认为问题在于这个过程仍然花了太长时间,因此终止了。

  1. 我(故意)使用global变量在函数中工作时,我在本地运行,但不工作时部署(原因我有点理解-工人不共享内存https://dash.plotly.com/sharing-data-between-callbacks)

我正在使用global,以便能够看到函数在运行时所做的实时更新。同样,作为本地黑客工作,但不能在服务器上工作。我不知道如果没有某种全局操作,我还能怎么观察函数的进程。我很想有一个聪明的解决办法,但是我想不出来。


我对web应用程序没有经验,所以提前感谢你的建议。

解决这个问题的一个常见方法是:

  • 异步运行长计算,例如使用后台服务
  • 完成后,将结果放入共享存储空间,例如redis缓存或S3桶
  • 检查使用Interval组件或Websocket组件的更新

我可以推荐芹菜来跟踪任务。

相关内容

  • 没有找到相关文章

最新更新