在Web服务器上部署Python脚本

时间:2018-05-05 15:57:09

标签: python api flask server celery

我在 Python 3.6.3 中创建了一个项目,它有两个主要模块 -

  • OpenCv (opencv-python == 3.4.0.12)
  • TensorFlow (tf-nightly == 1.8.0.dev20180329)

现在在我的本地计算机上运行。我想通过 Flask 将其作为网站部署在Web服务器上。我知道我可以在我的main.py 中调用我的主要脚本 Flask.py(仅为了提示而创建)

Flask.py

from flask import Flask
import main # Main Python Script

app = Flask(__name__)

@app.route('/')
def my_script():
    main.some_func()
    ........
.......
.......
.......


if __name__ == '__main__':
    app.secret_key = 'super_secret_key'
    app.debug = True
    app.run(host='0.0.0.0', port=8000)

我浏览了一些链接,了解了CeleryThis链接(这是针对Keras,我使用的是Tensorflow)这里给出了部署将模型作为 API

所以我很难弄清楚应该如何将我的项目部署为网站或API。

  • 如果是网站,那我应该采取什么措施?我应该只是简单地调用该函数或使用 Celery
  • 如果是作为API ,那么我的API不需要一个Web服务器而我的网站需要另一个Web服务器吗?

(我的结论可能不对)

任何人请告诉我如何处理这个问题。谢谢!

1 个答案:

答案 0 :(得分:3)

一般来说:

您可以同时执行这两项操作:您可以在同一台计算机上运行WebServer AND API。只需将您的代理设置正确。 API调用也可以从您的服务器进行。 API有助于保持您的MVC架构的正确性。

如果您的API和WebServer之间存在一些不利影响(性能问题),您可以在以后使用单独的服务器。

API方法的最大缺点是性能下降,但是您仍然可以在WebServer中编写绕过它的脚本。

对于Keras,Tensorflow或任何AI实现,我强烈建议使用单独的服务器,因为这是资源密集型的(在培训时需要大量的GPU电源)和Web服务器更多的CPU饥饿(或多或少稳定负载)。 / p>

但在进入生产之前,通用方法仍然可行。