【问题标题】:Running Python Eve Rest API in Production在生产环境中运行 Python Eve Rest API
【发布时间】:2014-04-29 21:45:34
【问题描述】:

现在不是将我的 Python Eve Api 移动到生产环境的时候。有几种方法可以做到这一点,最常见的要求是:

  • 错误记录
  • 自动重生
  • 多个进程(如果可能)

我找到的最佳解决方案是使用 nginx 服务器作为前端服务器。 python eve 在 uWSGI 中间件上运行

问题:我有一个自定义的__main__ 不被 uwsgi 调用。

是否有人正在运行此配置或其他建议?一旦它工作,我将分享一个运行配置。

谢谢。

解决方案(更新):

根据下面的建议,我将 Eve() 方法移至 init.py 并使用单独的 wsgi.py 运行应用程序。

文件夹结构

webservice/init.py 网络服务/模块/... 设置.py wsgi.py

init.py 包含的地方

app = Eve(auth=globalauth.TokenAuth)
Bootstrap(app)
app.config['X_DOMAINS'] = '*'
...

并且 wsgi.py 包含

from webservice import app
if __name__ == "__main__":
  app.run()

wsgi.ini

[uwsgi]
chdir=/var/www/api/prod
module=wsgi:app
socket=/tmp/api.sock
processes=1
master=True
pidfile=/tmp/api.v1.pid
max-requests=5000
daemonize=/var/www/api/logs/prod.api.log
logto=/var/www/api/logs/uwsgi.log

nginx.conf

location = /v1 { rewrite ^ /v1/; }
    location /v1 { try_files $uri @apiWSGIv1; }
    location @apiWSGIv1 {
              include uwsgi_params;
              uwsgi_modifier1 30;
              uwsgi_pass unix:/tmp/digdisapi.sock;
    }

启动命令:

uwsgi --ini uwsgi.ini

【问题讨论】:

    标签: python deployment nginx production-environment eve


    【解决方案1】:

    WSGI 容器期望运行一个可调用/函数,它们不执行您的“主”条目。使用 run:Eve 您要求 uWSGI 执行(在每个请求时)“run”模块中的“Eve”函数(这显然是错误的)

    移动

    app = Eve(auth=globalauth.TokenAuth)
    

    __main__ 之外检查并告诉uWSGI 使用“运行”模块中可调用的“应用程序”

    module = run:app
    

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 2017-01-12
      • 2012-12-26
      • 2011-03-20
      • 2016-10-22
      • 1970-01-01
      • 2023-03-06
      • 2013-08-24
      • 2019-10-07
      相关资源
      最近更新 更多