ํ๋ก์ ํธ์์ OpenAI์ image edit ๊ธฐ๋ฅ์ ํ์ฉํ ์ด๋ฏธ์ง ์์ฑ์ ๊ตฌํํ๋ ์ค,
Amplify ํ๊ฒฝ์์ API ์์ฒญ์ด 504 Gateway Timeout ์๋ฌ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค.
completed
์ํ๊ฐ ๋๋ฉด ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ ํ์ด์ง๋ก ์ ํAmplify์์ SSR์ ์ ๋ํ๊ธฐ ์ํด middleware.ts
๋ฐ app/api/.../route.ts
์ธ์
pages/api/ping.ts
๋ ์ถ๊ฐํ์ฌ SSR Lambda๊ฐ ํ์คํ ์์ฑ๋๋๋ก ์ฒ๋ฆฌ
fire-and-forget ํธ์ถ ์ .catch()
๋ก ์์ธ ๋๋ฝ ๋ฐฉ์ง
์ด๊ฑด try catch ๋ .catch ๋ ์ฐ๋ฉด fire-and-forget ์ด ์๋๋ ๊ฒ ํ์ธ!!!
์๋์ฒ๋ผ ๊ผผ์๋ก ์ฒ๋ฆฌํ์
import api from "@/apis/axios";
import type { GenResponse } from "@/types/iffy.types";
import { type NextRequest, NextResponse } from "next/server";
function awaitTime(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export async function GET(
request: NextRequest,
): Promise<NextResponse<GenResponse>> {
const searchParams = request.nextUrl.searchParams;
const query = searchParams.get("id");
if (!query) {
return NextResponse.json(
{ status: "error", message: "No id provided" },
{ status: 400 },
);
}
// ์๋ณธ ์์ฒญ์์ ์ฟ ํค ํค๋ ๊ฐ์ ธ์ค๊ธฐ
const cookieHeader = request.headers.get("cookie");
// Fire-and-Forget ์์ฒญ ์ ์ฟ ํค ํค๋ ์ ๋ฌ
api.get(`/api/backtask?id=${query}`, {
headers: {
...(cookieHeader && { Cookie: cookieHeader }),
},
});
// ์ฌ๊ธฐ๊ฐ ๊ผผ์๋ถ๋ถ..
// await ์ ํ์ง ์์ผ๋ api.get ์ด ๋๊ธฐ๋ ์ ์
// ๋ฆฌ์คํฐ์ค๋ก ๋์ด๊ฐ๋ฒ๋ ค ์คํ์ด ์๋๋ ๋ฌธ์ ์์ ํด๊ฒฐ์ฉ
// upstash ๋ฑ์ ์ฐ๋ผ๊ณ ํ์ง๋ง.. ๊ฐ๋จํ ์ฒ๋ฆฌํด๋ณด๊ณ ์ถ์๊ธฐ ๋๋ฌธ...
await awaitTime(1000);
return NextResponse.json(
{ status: "success", message: "IFFY ์์ฑ ์์ฒญ ์ ๋ฌ" },
{ status: 202 },
);
}