Alb*_*gía 6 python flask supervisord gunicorn
我试图在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
Run Code Online (Sandbox Code Playgroud)
Gunicorn工作.然后我杀了它.注意没有扩展名的配置文件,因为".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
Run Code Online (Sandbox Code Playgroud)
并更新Supervisor中的更改:
supervisorctl reread
# gunicorn: changed
supervisorctl update
# gunicorn: stopped
# gunicorn: updated process group
Run Code Online (Sandbox Code Playgroud)
检测文件中的更改并适用于Gunicorn程序.好的,但后来我尝试启动它:
supervisorctl start gunicorn
Run Code Online (Sandbox Code Playgroud)
变得讨厌:
gunicorn: ERROR (abnormal termination)
Run Code Online (Sandbox Code Playgroud)
检查主管的日志:
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
Run Code Online (Sandbox Code Playgroud)
我现在不知道该怎么办......你能帮助我吗?多谢!
编辑:抱歉,我忘了说我已经导出了PYTHONPATH变量:
export PYTHONPATH=/usr/local/bin:/usr/local/lib/project
Run Code Online (Sandbox Code Playgroud)
'my_app'位于/ usr/local/bin中.其他模块需要lib路径.我还编辑了Supervisor配置文件以指示环境变量,如:
environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project/
Run Code Online (Sandbox Code Playgroud)
但没有奏效.
编辑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.
Run Code Online (Sandbox Code Playgroud)
'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
...
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请尝试在调试模式下启动gunicorn:
command=/usr/local/bin/gunicorn --debug --log-level debug my_app:app -c /path/to/.gu_setup
Run Code Online (Sandbox Code Playgroud)
或直接将路径传递给gunicorn:
command=/usr/local/bin/gunicorn --pythonpath /usr/local/bin,/usr/local/lib/project my_app:app -c /path/to/.gu_setup
Run Code Online (Sandbox Code Playgroud)
编辑: gunicorn --pythonpath被打破,你只能传递一个目录:
command=/usr/local/bin/gunicorn --pythonpath /usr/local/lib/project my_app:app -c /path/to/.gu_setup
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14342 次 |
| 最近记录: |