You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在公网可访问服务器部署Spacy+Flask语言分析应用?

问题描述

我正在使用Python开发一款语言分析程序,目前已有以下代码在本地服务器(localhost)运行:

from flask import Flask, request, jsonify, render_template
import en_core_web_sm
from rules import *

nlp = en_core_web_sm.load()

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/api/rule1', methods=['POST'])
def process_text_r1():
    try:
        text = request.json.get('text', '')

        if not text:
            return jsonify({'error': 'Text not provided'}), 400

        result = rule1(nlp,text)
        return jsonify({'result': result})

    except Exception as e:
        return jsonify({'error': 'Internal server error', 'message': str(e)}), 500

我希望能够在公网可访问的服务器上运行该应用。
我曾尝试将应用上传至Vercel,但收到体积超限的警告(限制为50MB),我困惑仅8KB的代码为何会超出限制。
我也尝试过在Namecheap托管平台创建应用,但流程过于复杂。

解决方案

Vercel体积超限的原因

你看到的8KB只是代码文件的大小,但部署时会安装所有依赖包。en_core_web_sm是spaCy的英文模型,本身体积约120MB,远超Vercel的50MB限制,加上Flask等其他依赖,总大小自然会超标。

可行的公网部署方案

1. 轻量云服务器部署

  • 选购基础配置的轻量云服务器(如1核1G内存实例),系统选Ubuntu或CentOS。
  • 登录服务器后,安装Python、pip,克隆你的代码仓库。
  • 执行pip install flask spacy安装依赖,再用python -m spacy download en_core_web_sm下载模型。
  • 用Gunicorn或uWSGI作为WSGI服务器启动应用,配置Nginx反向代理,即可通过公网IP访问。

2. Heroku免费层部署

  • Heroku免费版虽有休眠限制,但适合测试阶段使用。
  • 在项目根目录创建Procfile,内容为web: gunicorn app:app(假设主文件是app.py)。
  • 创建requirements.txt,列出依赖:
    flask
    spacy
    gunicorn
    
  • 部署时,可在启动脚本中添加模型下载逻辑,或通过Heroku的构建命令提前下载en_core_web_sm。

3. Render免费层部署

  • Render免费层对小应用的体积限制更宽松,支持Flask应用一键部署。
  • 准备好requirements.txt和启动配置,平台会自动安装依赖及spaCy模型,无需额外复杂操作。

Namecheap部署简化技巧

如果仍想尝试Namecheap:

  • 选择其Python应用托管套餐,而非通用虚拟主机。
  • 按平台提示上传代码后,通过SSH连接服务器,手动执行pip install和模型下载命令,避免自动部署的兼容性问题。

内容的提问来源于stack exchange,提问作者Hex Heager

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:28:25