概要
POSTで受信したデータを元に処理行うAPIを作っています。
POST送信側へ5秒以内に応答する必要があるため、時間のかかる処理を書けず悩んでいます。
#試したこと
callback(null, { statusCode: 200, headers: {'Access-Control-Allow-Origin':'*'}, body:'Done' }) (実行したい関数)
下記のようにcallbackの後ろに実行したい関数を書いてみましたが、やはり処理が完全に終わるまでcallback処理してくれない為、結局実行時間は同じでした。
質問
このように実行時間が限れている環境で、時間のかかる処理をバックグラウンドまたはキュー方式で処理を予約するにはどのようにすれば良いのでしょうか?
簡単なアドバイスや、そういった時に使えるサービスがありましたら教えて下さい。
宜しくお願い致します。
追記 非同期処理について
サンプルコードになりますが、下記にようになります。
heavyMetodというのが処理に時間のかかるのメソッドになります。
export const handler=async(event:any, context:Context, callback:Callback)=>{ const order = JSON.parse(event.body) await heavyMetod(order) callback(null, { statusCode: 200, headers: {'Access-Control-Allow-Origin':'*'}, body:'Done' }) } const heavyMetod = async(data) =>{ const browser = await chromium.puppeteer.launch({ args: chromium.args, defaultViewport: chromium.defaultViewport, executablePath: await chromium.executablePath, headless: chromium.headless, }) let page = await browser.newPage(); await page.goto(data.url); const elem = await page.$x("//input[@name='auth']") if(Array.isArray(elem)){ await Promise.all([ elem[0].click(), page.waitForNavigation() ]) console.log(await page.title()) }else{ await Promise.all([ elem.click(), page.waitForNavigation() ]) console.log(await page.title()) } await browser.close() }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/04 05:41
2020/07/04 05:43
2020/07/04 05:55
2020/07/04 05:59
2020/07/04 06:01