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

2024-04-29 23:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Dash开发一个棒球模拟器应用程序。它使用SGD模型来模拟阵容和投手之间的游戏。应用程序(正在建设中)可以在这里找到:https://capstone-baseball-simulator.herokuapp.com/和repo:https://github.com/c-fried/capstone_heroku

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

这可能有两个部分:1。在避免超时的同时运行实际函数&;2.在函数运行时显示其进度


我在解决这个问题时遇到了几个问题:

  1. 该功能价格昂贵,无法在30秒超时前完成。(需要几分钟才能完成。)

为此,我尝试按照这些指令(https://devcenter.heroku.com/articles/python-rq)创建一个worker.py(仍在repo中),将函数移动到外部.py…等等。我认为问题是,这一进程仍然需要太长时间,因此终止

  1. 我(有意地)在函数中使用了一个global变量,当我在本地运行时该变量有效,但在部署时不起作用(出于某种原因,我理解-工作者不共享内存https://dash.plotly.com/sharing-data-between-callbacks

我使用global来查看函数运行时的实时更新。同样,在本地作为黑客工作,但在服务器上不工作。我不知道在没有某种全局操作的情况下,我还能如何观察函数的进度。我很想找到一个聪明的解决办法,但我想不出来


我对网络应用没有经验,所以提前谢谢你的建议


Tags: 函数pyhttps模型服务器com应用程序heroku
1条回答
网友
1楼 · 发布于 2024-04-29 23:19:12

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

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

我可以推荐Celery来跟踪任务

相关问题 更多 >