V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Doragd
V2EX  ›  问与答

如何在 vercel 里面包含超过 50MB 的静态文件

  •  
  •   Doragd · 2022-10-02 12:42:05 +08:00 · 2283 次点击
    这是一个创建于 792 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,希望请教大家一个问题 这是我的目录结构,里面有一个大于 50MB 的静态文件

    //省略
    app.py
    assets/data.json # 大于 50MB
    

    这是 app.py 里面的涉及到静态文件的细节

    data = os.path.join(base_dir, "assets", "data.json")
    

    在部署的时候,vercel 提示说: serverless function exceeds maximum size limit of 50mb

    想请问下该怎么在 vercel 里面包含超过 50MB 的静态文件呢? 或者有什么更好的方法避免这一问题吗?

    谢谢

    23 条回复    2022-10-08 15:45:49 +08:00
    eason1874
        1
    eason1874  
       2022-10-02 12:50:47 +08:00
    好像是上传源码包最大 50MB ,解压后最大 250MB

    可以尝试压缩它,在部署代码里解压再加载
    Doragd
        2
    Doragd  
    OP
       2022-10-02 12:53:04 +08:00
    @eason1874 感谢呜呜呜!!
    Track13
        3
    Track13  
       2022-10-02 13:17:02 +08:00 via Android
    往死里薅是吧?
    Doragd
        4
    Doragd  
    OP
       2022-10-02 13:36:28 +08:00
    @Track13 您好~是这样的,我的网站里面确实涉及到了这么大的静态文件,并非是为了作为其他用途,谢谢
    qfdk
        5
    qfdk  
       2022-10-02 13:52:09 +08:00 via iPhone
    @Doragd 分成两个文件呗
    Doragd
        6
    Doragd  
    OP
       2022-10-02 13:59:31 +08:00
    @qfdk 谢谢回复,应该是整体大小不超过 50MB
    Doragd
        7
    Doragd  
    OP
       2022-10-02 13:59:49 +08:00
    @eason1874 发现不会报错了,但是还是 500 错误 2333
    qfdk
        8
    qfdk  
       2022-10-02 14:04:31 +08:00 via iPhone
    @Doragd 这样明确了 你可以分开两个工程 一个最为静态资源 zip 一下 然后上传完 unzip. 原工程的静态资源指向这里. 方便替换静态资源而不中断服务
    Doragd
        9
    Doragd  
    OP
       2022-10-02 14:07:37 +08:00
    @qfdk 尝试过压缩再解压,deploy 过程不会报错了,但是还是提示 500qwq
    SunsetShimmer
        10
    SunsetShimmer  
       2022-10-02 14:13:52 +08:00
    Vercel 免费版有运行时间 10s 限制,但 500 一概不是因为这个。
    能不能 try 一下,把 traceback 返回来?
    SunsetShimmer
        11
    SunsetShimmer  
       2022-10-02 14:14:04 +08:00
    @SunsetShimmer *应该
    changwei
        12
    changwei  
       2022-10-02 14:25:13 +08:00 via Android   ❤️ 1
    把这个静态资源放到公有云 oss 里面比较好,马上双十一各大云也有优惠包可以蹲一下
    SorcererXW
        13
    SorcererXW  
       2022-10-02 15:21:51 +08:00
    json 压缩空间还是很大的,比如换成二进制 protobuf/msgpack 、gzip 压缩
    QingStone
        14
    QingStone  
       2022-10-02 17:02:50 +08:00 via iPhone
    假如涉及到会处理这个文件,那么时间超长,也会导致响应超时。
    kkocdko
        15
    kkocdko  
       2022-10-02 17:25:51 +08:00
    回 14 楼:建议压缩,用个解压快一点的算法,lz4/zstd 什么的。
    另外毕竟人家免费的服务,还是善良一点比较好。
    docx
        16
    docx  
       2022-10-02 17:42:38 +08:00 via iPhone
    如果这是符合使用条款的倒也没啥

    不过我还是倾向于找个对象存储丢上去,免费的也可以
    wxf666
        17
    wxf666  
       2022-10-02 21:46:19 +08:00
    @kkocdko 确实。拿了个 ~/.conda/pkgs/cache/e5e4a514.json ( 64.8 MB )试了下

    - lzma 极限压缩后 7.14 MB ,解压时间为 0.7 s
    - zstd 极限压缩后 7.26 MB ,解压时间为 0.1 s


    @Doragd 或者,考虑用 pickle 存?文件又小,速度又快

    上述文件用 pickle 存后,只需 35.1 MB 了

    lzma 极限压缩后 7.06 MB ,zstd 极限压缩后 7.68 MB
    Doragd
        18
    Doragd  
    OP
       2022-10-07 15:48:01 +08:00
    @wxf666 谢谢您~我试试呢
    Doragd
        19
    Doragd  
    OP
       2022-10-07 15:48:20 +08:00
    @QingStone 原来如此,谢谢您呜呜呜
    Doragd
        20
    Doragd  
    OP
       2022-10-07 15:48:48 +08:00
    @SunsetShimmer 谢谢,很有可能运行超时了 qwq
    Doragd
        21
    Doragd  
    OP
       2022-10-07 15:50:54 +08:00
    @changwei 请问把这个放进 oss 以后,那访问网站的时候是临时下载回来吗?
    SunsetShimmer
        22
    SunsetShimmer  
       2022-10-07 19:35:12 +08:00
    @Doragd 如果超时,返回的是 Vercel 的错误页(如果有 Cloudflare 什么的,可能是 CDN 的错误页),Vercel 报错是 504: GATEWAY_TIMEOUT Code: FUNCTION_INVOCATION_TIMEOUT ,会提示 This Serverless Function has timed out.
    Doragd
        23
    Doragd  
    OP
       2022-10-08 15:45:49 +08:00
    @SunsetShimmer 谢谢您,好像报的是 This Serverless Function has timed out.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6135 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:12 · PVG 10:12 · LAX 18:12 · JFK 21:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.