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