Heroku在一台dyno中运行两名工人

时间:2018-07-17 06:53:04

标签: python heroku

我刚刚开始使用Heroku,并且正在编写一个Web服务器,当客户端发送HTTP POST请求时,该客户端应将客户端放入队列中。由于某种原因,这不起作用,我猜是因为一台dyno中有两名工人。重新启动时的控制台输出如下所示。

2018-07-17T06:27:01.144106+00:00 app[web.1]: [2018-07-17 06:27:01 +0000] [8] [INFO] Booting worker with pid: 8
2018-07-17T06:27:01.195185+00:00 app[web.1]: [2018-07-17 06:27:01 +0000] [9] [INFO] Booting worker with pid: 9
2018-07-17T06:27:01.736853+00:00 app[web.1]: [2018-07-17 06:27:01,736] WARNING in server: Running server.py Time:1736420
2018-07-17T06:27:01.738896+00:00 app[web.1]: [2018-07-17 06:27:01,738] WARNING in server: Running server.py Time:1738442

我不确定是什么原因引起的,有人可以帮忙吗?以下是Python代码的一部分。它不会引发错误,只会运行两次。我不想要两个服务器,因为它应该用于游戏。拥有两个不同的游戏列表并不能真正解决问题。同样,如果玩家被添加到一个队列中并试图找出是否已加入游戏,则有50%的时间访问错误的队列,因为其中有两个队列,最终会引发错误。除了遣散其中一名工人之外,还有其他解决方案吗?

server.py

app = Flask(__name__)
app.debug = 'DEBUG' in os.environ
sockets = Sockets(app)
app.logger.warning('Running server.py Time: {}'.format(datetime.now().time().microsecond + datetime.now().time().second * 1000000))
games = [Game([], -1, 0)]
PLAYER_COUNT = 8

PROCFILE

web: gunicorn server:app

如果我需要提供其他信息,请告诉我。这是我第一次使用Heroku,Flask,gunicorn和Python。

我通常使用Java工作,所以这对我来说确实是一个挑战。如果我做错了什么,请告诉我(最好是让我知道)。该PROCFILE可能是错误的,但是我不确定它的作用是什么,所以我将其保留原样。

1 个答案:

答案 0 :(得分:1)

It's in the docs Heroku会根据进程的Dyno大小自动设置WEB_CONCURRENCY环境变量。