我在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)
我浏览了一些链接并了解了 Celery 和这个链接(它适用于 Keras,我正在使用 Tensorflow)在这里将模型部署为API。
所以我很难弄清楚如何将我的项目部署为网站或 API。
- 如果作为一个网站,那么我应该采取什么措施? 我应该简单地调用函数还是使用芹菜?
- 如果作为 API,那么我的 API 不需要一个 Web 服务器,我的网站不需要另一个 Web 服务器吗?
(我的结论可能是错误的)
任何人都可以告诉我如何处理这个问题。谢谢!
一般来说:
您可以同时执行这两项操作:您可以在同一台机器上运行 Web 服务器和 API。这只是正确设置代理的问题。API 调用也可以从您的服务器进行。API 有助于保持 MVC 架构的直接性。
您可以稍后为您的 API 和 Web 服务器使用单独的服务器,如果它们之间存在一些不利影响(性能问题)。
API 方法的最大缺点是性能损失,但您仍然可以在 Web 服务器中编写绕过它的脚本。
对于 Keras、Tensorflow 或任何 AI 实现,我强烈建议使用单独的服务器,因为这是资源密集型的(训练时需要大量的 GPU 能力),并且 Web 服务器更需要 CPU(或多或少稳定的负载)。
但在投入生产之前,通用方法仍然是可行的。