自分のアプリケーションドメインに対してUrlFetchを実行して、本文の電子メールをHTMLでフォーマットするための延期されたタスクがあります。
//Format body email in HTML
final Charset UTF8_CHARSET = Charset.forName("UTF-8");
final String FORMAT_EMAIL = "http://www." + NamespaceManager.getGoogleAppsNamespace() + "/email/formatEmail";
URL url = new URL(FORMAT_EMAIL);
HTTPRequest req = new HTTPRequest(url, HTTPMethod.POST, FetchOptions.Builder.withDeadline(60.0));
req.setPayload(Utils.getPostData(map, "UTF-8").getBytes());
HTTPResponse resp = urlFetchService.fetch(req);
if (resp.getResponseCode() == HttpURLConnection.HTTP_OK)
bodyMessage = new String(resp.getContent(), UTF8_CHARSET);
//here create new task to send email
SendEmail sendEmail = new SendEmail(emailTO, nameTO, emailREPLYTO, nameREPLYTO, subject, bodyMessage);
queue.add(TaskOptions.Builder.withPayload(sendEmail));
いくつかのパラメータをサーブレットformatEmailに渡して、素敵なHTMLメールを作成します。:)このコードは正常に機能し、新しいプッシュタスクを作成し、メールを正常に送信します。
問題は、このタスクが常に100%の場合、ユーザーアクセスがなくても新しいインスタンスを作成して、この困難なタスクを作成し、コードの最後でインスタンスをシャットダウンすることです。
これを回避する方法は?
自分のドメインではなく外部ドメインにUrlFetchを作成した場合、通常、GAEはそのための新しいインスタンスを作成しません。