我的前端向后端发起请求,后端处理比较慢,大约得2分钟,默认是60s就断链接,所以我就尝试了两种设置方式延长时间,但是都无效,请大牛解答下,多谢了。
报错:video.ts:116 GET https://www.futuremagic.cn/video/swap?unique_id=mp_o6dZ46weJZyYZt_zmYGchPlNgFzg&room_id=9c41075f590b89d4a86697f2f4c8df07&template_id=3_dancer2.mp4 504 (Gateway Time-out)(env: macOS,mp,1.06.2401020; lib: 3.1.4)
wx.request设置方式:
wx.request({
url: host.video.swap, // 替换为实际的后端接口地址
data: {'unique_id': unique_id,
'room_id': this.data.room_id, 'template_id': this.data.template_id,
},
method: 'GET',
timeout: 300000,
success: (res) => {
if (res.statusCode === 200 && res.data.code === 0) {
if (res.data.res && res.data.res.video) {
// 解码 Base64 编码的视频数据
const decodedVideoData = wx.base64ToArrayBuffer(res.data.res.video);
app.json设置方式:
"pages/festival/festival"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
},
"networkTimeout": {
"request": 300000,
"downloadFile": 300000
},
你这逻辑不对,这么长的时间,后端应该先直接返回等待结果,然后扔进队列里处理。
然后小程序端,再轮询去查结果才对
后台服务videoswap模块代码是:
res = requests.get(url=f'{edit_url}/magicapi/v1/festival/faceswap', params=payload, timeout=300)
logging.info('FaceSwap response returned')
res = res.json()
if res['res']['status'] == 0:
data = get_storage_value(FESTIVAL_ROOM_INFO, {'room_id': room_id}, {'video': 1, 'video_id': 1})
# 使用 Base64 编码将二进制数据转换为字符串
encoded_video_data = base64.b64encode(data['video']).decode('utf-8')
# 广播视频结果
RoomWebSocket.broadcast_message({'image_list': None, 'video': encoded_video_data, 'video_id': data['video_id']})
#RoomWebSocket.broadcast_message({'image_list': None, 'video': "video_test", 'video_id': data['video_id']})
logging.info('sleep start')
await gen.sleep(15)
logging.info('sleep done')
self.write(json.dumps({'code': 0, 'res': {'video': encoded_video_data, 'video_id': data['video_id'], 'template_type': 'video', 'status': 0}}))
前端代码是:
wx.request({
url: host.video.swap, // 替换为实际的后端接口地址
data: {'unique_id': unique_id,
'room_id': this.data.room_id, 'template_id': this.data.template_id,
},
method: 'GET',
timeout: 120000,
success: (res) => {
if (res.statusCode === 200 && res.data.code === 0) {
if (res.data.res && res.data.res.video) {