主管无法使用Gunicorn + Flask

我正在尝试在Ubuntu 12.04系统中从Supervisor运行Gunicorn。Gunicorn运行Flask应用程序(通过Flask的嵌入式服务器测试的简单REST Web服务)。我已经通过克隆GIT存储库来安装Gunicorn,试图避免“ apt-get install”,因为它在安装时会运行Gunicorn服务器。我不希望它运行,它将仅由Supervisor运行。

因此,安装后,如果我尝试:

cd /usr/local/bin

gunicorn my_app:app -c /path/to/gu_config_file

独角兽的作品。然后我杀了它。注意没有扩展名的配置文件,因为带有’.py’扩展名的文件对我不起作用。所以我像这样编辑Supervisor的配置文件:

[program:gunicorn]

command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup

directory=/usr/local/bin/

autostart=true

autorestart=true

redirect_stderr=True

并更新Supervisor中的更改:

supervisorctl reread

# gunicorn: changed

supervisorctl update

# gunicorn: stopped

# gunicorn: updated process group

检测文件中的更改并适用于Gunicorn程序。好的,但是我尝试启动它:

supervisorctl start gunicorn

Getting an annoying:

gunicorn: ERROR (abnormal termination)

查看主管日志:

2013-03-08 13:07:22,378 INFO spawned: 'gunicorn' with pid 3355

2013-03-08 13:07:22,916 INFO exited: gunicorn (exit status 3; not expected)

2013-03-08 13:07:23,918 INFO spawned: 'gunicorn' with pid 3361

2013-03-08 13:07:24,492 INFO exited: gunicorn (exit status 3; not expected)

2013-03-08 13:07:26,496 INFO spawned: 'gunicorn' with pid 3367

2013-03-08 13:07:27,078 INFO exited: gunicorn (exit status 3; not expected)

2013-03-08 13:07:30,085 INFO spawned: 'gunicorn' with pid 3373

2013-03-08 13:07:30,628 INFO exited: gunicorn (exit status 3; not expected)

2013-03-08 13:07:31,630 INFO gave up: gunicorn entered FATAL state, too many start retries too quickly

我不知道该怎么办…你能帮我吗?多谢!

编辑:对不起,我忘了说我已将PYTHONPATH变量导出为:

export PYTHONPATH=/usr/local/bin:/usr/local/lib/project

“ my_app”位于/ usr / local / bin中。其他模块需要lib路径。我还编辑了Supervisor配置文件以指示环境变量,例如:

environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project/

但是没有用。

编辑2:正如@robertklep在他的评论中建议的那样,这是日志的输出:

Traceback (most recent call last):

File "/tmp/gunicorn/gunicorn/arbiter.py", line 485, in spawn_worker

worker.init_process()

File "/tmp/gunicorn/gunicorn/workers/base.py", line 100, in init_process

self.wsgi = self.app.wsgi()

File "/tmp/gunicorn/gunicorn/app/base.py", line 103, in wsgi

self.callable = self.load()

File "/tmp/gunicorn/gunicorn/app/wsgiapp.py", line 25, in load

return util.import_app(self.app_uri)

File "/tmp/gunicorn/gunicorn/util.py", line 369, in import_app

__import__(module)

File "/usr/local/bin/my_app.py", line 4, in <module>

import const

ImportError: No module named const

2013-03-08 13:29:35 [3670] [INFO] Worker exiting (pid: 3670)

2013-03-08 13:29:36 [3665] [INFO] Shutting down: Master

2013-03-08 13:29:36 [3665] [INFO] Reason: Worker failed to boot.

‘const’模块在/ usr / local / lib / project中…

回答:

我看不到你在主管配置文件中设置环境:

[program:gunicorn]

environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project

command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup

...

如果那不起作用,请尝试以调试模式启动gunicorn:

command=/usr/local/bin/gunicorn --debug --log-level debug my_app:app -c /path/to/.gu_setup

或直接将路径传递至gunicorn:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/bin,/usr/local/lib/project my_app:app -c /path/to/.gu_setup

编辑: gunicorn的–pythonpath坏了,你只能传递一个目录:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/lib/project my_app:app -c /path/to/.gu_setup

以上是 主管无法使用Gunicorn + Flask 的全部内容, 来源链接: utcz.com/qa/425305.html

回到顶部