Next.js Edge Functions 超时问题

最近使用Next.js框架开发gpt-4应用,发现调用gpt-4返回结果是超过30秒就出现timeout提示。在fetch函数添加各种timeout选项问题依然存在。后面找寻时发现:

“Edge Functions have a timeout of 30 seconds and even longer when streaming, which far exceeds the timeout limit for serverless functions on Vercel’s Hobby plan. Using these can allow you to get past timeout issues when using AI APIs that take longer to respond. As an added benefit, Edge Functions are also cheaper to run.”

也就是说使用streaming功能的函数(包含ReadableStream关键字)必须是edge,即在函数后面添加:

export const runtime = “edge”;

这样即使超过30秒也不会报错。

 

https://vercel.com/docs/concepts/functions/edge-functions/streaming

 

Avoiding CORS Issues in React/Next.js

Cross-Origin Resource Sharing (CORS) 是一个让开发人员有些头疼的事。当在服务器调用外部api时,经常报这个错。以下有两种方法避免:

  1. 安装CORS library (https://www.npmjs.com/package/cors) 并告诉服务器访问,
    app.use(cors({
        origin: 'http://127.0.0.1:3000',
    }))
  2. 增加代理proxy,
    const url;
    if (process.env.NODE_ENV === "production") {
        url = "https://www.example.com/whoami"
    } else {
        url = "http://127.0.0.1:4000/whoami"
    }
    fetch(url)

    在package.json文件添加:

    "proxy": "http://localhost:4000",

    假如使用 Next.js 的话,在next.config.js文件下添加如下:

    module.exports = {
      async rewrites() {
        return [
          {
            source: '/api/:path*',
            destination: 'http://localhost:4000/:path*'
          }
        ]
      }
    }

Rails应用减少内存消耗

环境:Ubuntu 20.04

内存泄漏在 Ruby 中常常是由 C 拓展程序 bug 导致的。内存碎片会造成内存呈对数增长。 它看起来像一个长长的曲线,会到达某个不可见的限制点。所有 Ruby 进程都有一些内存碎片问题。Ruby 管理内存方式必然会导致这个问题。尤其是 Ruby 不会在内存中移动对象。这样可能会破坏持有 Ruby 对象指针的 C 扩展程序。 碎片有时会造成 Ruby 占用超过它实际需要两倍的内存,有时还可能会是 4 倍之多!

解决方法:1. 调整环境变量 export MALLOC_ARENA_MAX=2

2. 使用jemalloc内存分配库,检查是否支持

ruby -r rbconfig -e “puts RbConfig::CONFIG[‘MAINLIBS’]”

 

NextJS添加图片弹窗提示

首先安装 npm i reactjs-popup

代码如下:

import React from ‘react’;
import Popup from ‘reactjs-popup’;
import ‘reactjs-popup/dist/index.css’;

export default function PopupGfg(){
return(
<div>
<h4>NextJs Popup</h4>
<Popup trigger={<button> Click to open popup </button>}
position=”right center”>
<div>GeeksforGeeks</div>
<Link href=”#”>{<Image src=”/myalipay.jpg” width={300} height={400} alt=”banner”/>}</Link>
</Popup>
</div>
)
};

 

注: Position Enums: ‘top left’ ‘top right’ ‘bottom right’ ‘bottom left’ ‘right center’ ‘left center’ ‘top center’ ‘bottom center’ ‘center center’

创业领悟

二十多岁的时候,觉得企业家即有权又有钱,无限风光。励志要成为这样的人物。

三十岁的时候,觉得创业是一件即好玩又刺激的事情。

快四十岁了,一直想培养自己的爱好特长,突然发现创业本身就是我要找的爱好。

 

youtube-dl 下载语音和视频

首先查看youtube单个音像的视频和音频对应的编号:

 youtube-dl -F  https://www.youtube.com/watch?v=ZsVcKcBiYHM

[youtube] ZsVcKcBiYHM: Downloading webpage

[youtube] ZsVcKcBiYHM: Downloading MPD manifest

[youtube] ZsVcKcBiYHM: Downloading player b128dda0

[info] Available formats for ZsVcKcBiYHM:

format code  extension  resolution note

139          m4a        audio only DASH audio   56k , m4a_dash container, mp4a.40.5 (22050Hz), 42.06MiB

251          webm       audio only tiny  120k , webm_dash container, opus @120k (48000Hz), 104.14MiB

140          m4a        audio only tiny  129k , m4a_dash container, mp4a.40.2@129k (44100Hz), 111.63MiB

278          webm       256×144    DASH video   95k , webm_dash container, vp9, 30fps, video only

160          mp4        256×144    DASH video  108k , mp4_dash container, avc1.4d400b, 30fps, video only

242          webm       426×240    DASH video  220k , webm_dash container, vp9, 30fps, video only

133          mp4        426×240    DASH video  242k , mp4_dash container, avc1.4d400c, 30fps, video only

134          mp4        640×360    360p  104k , mp4_dash container, avc1.4d401e@ 104k, 30fps, video only, 89.95MiB

243          webm       640×360    DASH video  405k , webm_dash container, vp9, 30fps, video only

244          webm       854×480    DASH video  752k , webm_dash container, vp9, 30fps, video only

135          mp4        854×480    DASH video 1155k , mp4_dash container, avc1.4d400a, 30fps, video only

136          mp4        1280×720   720p  243k , mp4_dash container, avc1.64001f@ 243k, 30fps, video only, 209.51MiB

247          webm       1280×720   DASH video 1505k , webm_dash container, vp9, 30fps, video only

137          mp4        1920×1080  1080p  404k , mp4_dash container, avc1.640028@ 404k, 30fps, video only, 348.85MiB

248          webm       1920×1080  DASH video 2646k , webm_dash container, vp9, 30fps, video only

18           mp4        640×360    360p  198k , avc1.42001E, 30fps, mp4a.40.2 (44100Hz), 170.78MiB

22           mp4        1280×720   720p  371k , avc1.64001F, 30fps, mp4a.40.2 (44100Hz) (best)

选择对应的编号下载:

youtube-dl -f 135+140 https://www.youtube.com/watch?v=ZsVcKcBiYHM