Open1
【Server Tips📝/非同期処理Tips📝】Server側のTimeout設定について📝

Server側のTimeout設定について📝
Server側のタイムアウトを無制限にすることは技術的には可能ですが、推奨できません。
推奨できない理由
1. リソースリーク
- 処理が無限に続く可能性
- メモリ・CPU・ネットワーク接続の枯渇
2. ユーザー体験が低い
- フロントエンドが無限に待機状態
- ユーザーがアプリケーションを使用不可能
3. システム障害のリスク
- 他のリクエストへの影響
- サーバー全体のパフォーマンス低下
4. デバッグの困難さ
- 問題の特定が困難
- 監視・運用での問題検知が遅れる
推奨される代替案
1. 段階的なタイムアウト延長
現在の600秒(10分)で様子を見て、必要に応じて段階的に延長:
}, 900000); // 15分
}, 1200000); // 20分
2. 非同期処理への変更
長時間処理を非同期化し、ポーリングで結果を取得:
// 即座にタスクIDを返す
const taskId = await startPatentAnalysis(query);
return { taskId, status: 'processing' };
// 別途ポーリングエンドポイントで結果を確認
const result = await checkTaskStatus(taskId);
3. プログレス表示の実装
WebSocketやSSEでリアルタイムに進捗を表示する。
// 進捗更新の送信
websocket.send({ progress: 30, message: "特許検索中..." });
4. バッチサイズの調整
一度に処理する特許数を制限する。