[求助大佬!] nodejs axios 连接超时问题

231 天前
 rizon

国内 aws 机器。 原本是 python 代码,对 jina.ai 的 embedding API 接口发 reques 请求,请求是可以成功的。 但是换成 nodejs 后,用 fetch 或 axios 请求,总会 connect timeout 。

找不到解决办法,特来求助大佬们,谢谢

2590 次点击
所在节点    Node.js
26 条回复
langhuishan
231 天前
跨域了
importmeta
231 天前
用 trycatch 包裹 axios 请求 打印出 error
rizon
231 天前
@langhuishan 后端 nodejs 请求,没有跨域一说
rizon
231 天前
@importmeta #2
Error: connect ETIMEDOUT xxxxx.xxx:443
at createConnectionError (node:net:1648:14)
at Timeout.internalConnectMultipleTimeout (node:net:1707:38)
at listOnTimeout (node:internal/timers:583:11)
at process.processTimers (node:internal/timers:519:7) {
errno: -110,
code: 'ETIMEDOUT',
syscall: 'connect',
address: 'xxx.xxx.xx',
port: 443
rizon
231 天前
真的太诡异了,到底是哪里问题啊,python 请求百分百成功,一换 nodejs 就超时。。。。
galileo2ai
231 天前
盲猜是 proxy 的问题,你搜一下 axios 或者 fetch 的 proxy 相关设置,把你的本地的 proxy 配置手动配置一下。
jiangzm
231 天前
在服务器上使用 curl 请求看看, 排除下是不是本地根证书问题
rizon
231 天前
@liyang582 #6 没有任何 http 代理,python 和 nodejs 在同一个机器上。
@jiangzm #7

最后还是没解决,我单独写了一个 python ,只用于发 request 请求,然后 nodejs 请求这个 python 服务去调用 api 接口,,,,

我觉得是 nodejs 里的一些内置参数的问题,但是我没查出来
galileo2ai
231 天前
@rizon 你本地也没开代理? jina.ai 不是海外的网站吗,因为有一些 http 代理可能是写到环境变量里面的,而 python 读了但是 nodejs 可能没读。

当然如果你也都排除了这个可能性,那就不好说了,要是能有复现的代码我们调试一下最好😁
htf176
231 天前
可能是 node 版本问题,构建时使用的 ssl 库版本过低,使用高版本 node 试试
rizon
231 天前
@htf176 #10
@liyang582 #9
我怀疑是参数问题
jinaapi 原本的参数里,input 是一个数组 { "input": [... ]} ,我在数组里是 base64 的图片数据。
我用 python 做了代理后,在 nodejs 里用数组的这个形式发起请求后就会有问题,但是改成 input 单个对象请求就没问题了。
rizon
231 天前
@rizon #11 忽略这个吧,我搞错了,不是这个问题。
importmeta
231 天前
你这个数组放哪传的,URL 参数还是 Body 还是用 multipart/form-data, 其他我就不知道了.
xiaoming1992
231 天前
试试在 header 里添加 content-type (如果本来显式声明了的话就移除)
humbass
231 天前
换语言大概率是发的东西不一样
rizon
231 天前
@xiaoming1992 删除掉 content type 可以了!!!真的是这个问题!!!感谢!!!

而且你这么一说就提醒我了,过去我也遇到过类似的问题,也是因为多写了 content type 导致的,这会没想起来这事。
但是我不知道为什么会有这个问题。。。。
rizon
231 天前
@rizon 而且这个问题诡异的是,请求还偶尔能成功一次。10 次里成功一次的样子
xiaoming1992
231 天前
@rizon #16 以下内容我也不太确定,你参考一下吧。

前端使用 fetch 时浏览器会自动帮你加 content-type ,这时候不能显式设置 content-type 。

后端 node 的 fetch 貌似不会帮你加,所以需要你显式加。python 可以估计是 py 的请求包会自动帮你加。至于偶尔能成功一次,可能是你换了其他的请求库?
krapnik
231 天前
你需要的是这个: https://curlconverter.com/
rizon
231 天前
@xiaoming1992 #18 哎,错觉啊,没解决,,就偶发好了一下下,刚才一试又不行了。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1106597

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX