为什么heroku中的worker无法从heroku中的web主应用程序读取文件,以及如何做到这一点?

zbq4xfa0  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(135)

我有一个streamlit文件部署到heroku。

  • main.py:main函数是在main.py中单击按钮时,将文件写入同一文件夹中的csv格式
  • scheduler.py:位于同一文件夹中的文件采用由www.example.com生成的同一csv格式文件main.py,并将其写入bigquery

这是在heroku中部署的,并使用过程文件指定

  • 网站:sh setup.sh &&流媒体运行main.py
  • 工作线程:Python scheduler.py

所有的代码都运行良好。但是问题是当我把它部署到heroku时,调度程序文件运行并推送到bigquery,但是没有文件被推。这是因为工作者和web在不同的环境中,所以工作者不能读取由www.example.com编写的文件main.py?
如何在后台推送到bigquery而不影响main.py?

5n0oy7gb

5n0oy7gb1#

这是否是因为工作线程和Web处于不同的环境中,因此工作线程无法读取由www.example.com写入的文件main.py?
你不能用这种方式在进程之间传递信息,因为每个进程都在一个单独的dyno上运行。
我建议您将数据存储在其他地方,例如PostgreSQL数据库。如果您希望继续使用CSV文件,您可以使用Amazon S3或Azure Blob Storage。您的两个dynos都可以连接到这些外部服务。
旁注:我不知道你的scheduler.py到底做了什么,但是如果它大部分时间都是闲置的,偶尔运行一个任务,我就不会像一个工人一样运行它。你会为它在大部分时间里什么都不做而付钱。
Heroku的a scheduler更适合,只需安排一个运行底层命令的作业,将其推送到BigQuery。

相关问题