我有一项延迟任务来格式化 HTML 中的正文电子邮件,对我自己的应用程序域执行 UrlFetch:
//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));
我将一些参数传递给 servlet formatEmail 以制作一封可爱的 HTML 电子邮件。.. :) 此代码工作正常,创建一个新的推送任务,并成功发送电子邮件。
问题是这个任务总是 100% 的时间创建一个新实例,即使没有任何用户访问,以使这个艰巨的任务和实例在代码结束时关闭。
如何避免这种情况?
如果我对外部域而不是我自己的域进行 UrlFetch,通常 GAE 不会为此创建新实例.... 不奇怪吗?