当前位置: 首页 > 面试题库 >

主管无法使用Gunicorn + Flask

柴琦
2023-03-14
问题内容

我正在尝试在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


 类似资料:
  • 问题内容: 我必须在 同一台 服务器上(客户端要求)设置“ dockerized”环境(集成,质量保证和生产)。每种环境的组成如下: Rabbitmq 芹菜 花 基于python 3的应用程序,称为“ A”(每个环境的特定分支) 在它们之上,jenkins将处理基于CI的部署。 在每个环境中使用一组容器听起来是最好的方法。 但是现在我需要流程经理来运行和监督所有这些: 3个兔子容器, 3个芹菜/花

  • 问题内容: 我正在使用Flask的内置开发服务器来开发Flask应用程序。我使用Flask-Script启动它。我想切换为使用Gunicorn作为Web服务器。为此,我需要在Flask-Script和Gunicorn之间编写某种集成代码吗?还是Flask-Script与使用Gunicorn运行应用程序无关? 提前致谢! 到@ sean-lynch的道具。以下是根据他的回答而工作,经过测试的代码。我

  • 问题内容: 当我尝试运行命令时: 我得到了错误: 消息15405,级别11,状态1,过程sp_addsrvrolemember,第45行无法使用特殊主体“ sa”。 欢迎提出想法/建议。 问题答案: “ sa”是sysadmin的保留登录名;它已经是sysadmin组的成员,该组胜过其他所有组。您无需将其添加到任何角色,那么为什么要尝试这样做呢?

  • 本文向大家介绍python Gunicorn服务器使用方法详解,包括了python Gunicorn服务器使用方法详解的使用技巧和注意事项,需要的朋友参考一下 1. 简介 Gunicorn(Green Unicorn)是给Unix用的WSGI HTTP 服务器,它与不同的web框架是非常兼容的、易安装、轻、速度快。 2. 示例代码1 启动 起来后显示 此时,调用http://127.0.0.1:8

  • 我已经检查了关于同一问题的大多数主题,但我找不到解决方案。 我的应用程序使用连接到一个服务,当我使用托管该服务的机器的IP地址时,它工作正常。但是,当我用主机名替换它时,它无法连接。我使用的连接方法非常标准: 例外情况是: JAVA网。UnknownHostException:无法解析主机“myHostname”:没有与主机名关联的地址 myHostname是我的实际主机名。 当我在我的电脑上使用

  • 问题内容: 我是新来的,仅使用nginx提供静态文件。我现在已经安装了flask and gunicorn。如果我运行,然后从服务器中获取它,它将运行良好。但是,如果尝试从浏览器访问它,它将返回404错误(我正在托管位于root用户的wordpress网站的服务器上运行此错误)。 Flask应用程序: 以及我的nginx配置的相关部分: 我希望这是所有相关信息。如果没有,请告诉。谢谢! 问题答案: