Google翻译APIPOST延迟11秒?
Google translate API POST 11second delay?
编辑:28 条消息需要 11.5 秒
单个请求工作正常。下面这段代码需要 11 秒,使用 API 中的邮递员设置路由来访问。
我是不是做错了什么?我觉得即使没有缓存也不应该花11秒。
$xs = ChatMessage::where('chat_room_id','=',$roomId)
->with('user')
->orderBy('created_at','DESC')
->get();
foreach($xs as $r){
$translate = new TranslateClient([
'key' => 'xxxxxxxxxxxxxxxxxxxxxxx'
]);
$result = $translate->translate($r->message_english, [
'target' =>'es',
'source' => 'en',
]);
$r->message = $result['text'];
}
return $xs;
我认为您只需将客户端移出 for each 循环即可轻松加快该过程。每次迭代时,您都在创建一个客户端。那不是最优的。您应该能够在每次翻译调用时重用客户端。这应该会加快您的翻译过程。您可以在官方 github client project
中找到这种用法的示例
这是一个伪代码示例:
client = new TranslateClient()
foreach(message in messages)
result = client.translate(message)
print(result)
另外,你的翻译文本有多长?您应该将要翻译的整个文本传递到单个调用中(只要支持的库允许)这样您还可以减少对 API.
的调用
如果您仍有问题,可以按照评论中提到的并行使用多个请求。
关于此的一些有用链接:
编辑:28 条消息需要 11.5 秒
单个请求工作正常。下面这段代码需要 11 秒,使用 API 中的邮递员设置路由来访问。
我是不是做错了什么?我觉得即使没有缓存也不应该花11秒。
$xs = ChatMessage::where('chat_room_id','=',$roomId)
->with('user')
->orderBy('created_at','DESC')
->get();
foreach($xs as $r){
$translate = new TranslateClient([
'key' => 'xxxxxxxxxxxxxxxxxxxxxxx'
]);
$result = $translate->translate($r->message_english, [
'target' =>'es',
'source' => 'en',
]);
$r->message = $result['text'];
}
return $xs;
我认为您只需将客户端移出 for each 循环即可轻松加快该过程。每次迭代时,您都在创建一个客户端。那不是最优的。您应该能够在每次翻译调用时重用客户端。这应该会加快您的翻译过程。您可以在官方 github client project
中找到这种用法的示例这是一个伪代码示例:
client = new TranslateClient()
foreach(message in messages)
result = client.translate(message)
print(result)
另外,你的翻译文本有多长?您应该将要翻译的整个文本传递到单个调用中(只要支持的库允许)这样您还可以减少对 API.
的调用如果您仍有问题,可以按照评论中提到的并行使用多个请求。
关于此的一些有用链接: