2017-05-31 74 views
0

只有两个.py文件部署一个python应用程序,但将其保存在一个dyno中的最简单方法是什么?我的文件是friend.pyfoe.py和我Procfile看起来是这样的:Heroku Python部署只有一个dyno使用两个.py文件

worker: python friend.py 
worker: python foe.py 

但当部署到Heroku的,我唯一的赛道是foe.py.我读过其他类似的问题,但它们似乎很复杂,我还不了解Python Web应用程序的内部工作原理。

+0

解释你的* .py文件要做什么以及它们如何互连 – Fabian

+0

@Fabian它们只是使用reddit的PRAW的两个函数,每个函数都做不同的事情。 –

回答

0

如果他们在并行工作截然不同的过程中,最直接的路径是二DYNOS,在Procfile使用不同的名字(实际上,friendfoe将工作细如进程名)。现在,您使用名称worker两次,所以foe.py显示,因为它是最后一个定义。有两件事要记住 -

  • Procfile中的名称可以是任意的;据我所知,唯一的“特殊”名称是web,它告诉Heroku期望该进程绑定到端口并接受来自路由网格的HTTP流量。 worker并不特别;它只是一个人们习惯于用“除了网络测试仪之外的其他东西”的惯例
  • 测试仪比虚拟机更接近Docker容器,所以一般的最佳实践是每个容器的一种进程。

如果你真的只需要一个DYNO(成本?),你可以写一个第三个脚本,其唯一的工作就是产卵friend.pyfoe.py作为子。在这种情况下,所有事物都会作为一个单位来上下。你不能独立管理朋友和敌人。

希望有所帮助。

+0

是的,我想保留它免费。那么我应该用'subprocess.Popen'来启动这两个文件吗? –

+1

这将工作,但我个人从'multiprocessing'开始。你的脚本会执行'import friend',然后调用'multiprocessing.Processing(target = friend.your_entry_point)'。但是,如果您有数据库连接,请确保它未由启动程序进程打开 - 您不应与w/subprocesses共享连接。 – bimsapi