gpt4 book ai didi

java - Google App Engine 数据存储区不实时运行,而是在本地运行

转载 作者:行者123 更新时间:2023-12-01 11:57:02 24 4
gpt4 key购买 nike

我已将 Java 项目部署到 Google App Engine,但数据存储区无法像本地那样工作。该项目生成一个网页,其中包含各种新闻文章的摘要。这些文章取自数据存储区。数据存储区每 30 分钟通过 cron 作业和 Java Servlet 更新一次新文章。至少这是本地发生的情况。实时部署时,根据日志,cron 作业成功运行,但数据存储中没有任何条目。有没有人遇到过类似的问题并有解决方案?

代码

@SuppressWarnings("serial")
public class CronServlet extends HttpServlet {
private static final Logger log = Logger.getLogger(CronServlet.class.getName());

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
try {
ArrayList<String> feeds = new ArrayList<String>();

feeds.add("http://feeds.reuters.com/reuters/technologyNews");
feeds.add("http://feeds.reuters.com/reuters/companyNews");

RunTagger tagger = new RunTagger();
tagger.loadRssStreams(feeds.toArray(new String[feeds.size()]));

ArrayList<Story> articles = tagger.tagArticles();
uploadArticles(articles);

log.info("Succesfully updated database");

} catch (Exception e) {
log.error("Failed to update database.");
e.printStackTrace();
}
}

private void uploadArticles(ArrayList<Story> articles) {
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

for(Story article : articles){
String url = article.getUrl();
String headline = article.getHeadline();
String summary = article.getSummary();
String tags = article.getTags().toString();
String feed = article.getFeed();
String image = article.getImage();

DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH);
Date date;

try {
date = format.parse(article.getDate());
} catch (ParseException e) {
date = new Date();
e.printStackTrace();
}

Key k = KeyFactory.createKey("Articles", url+feed);

Entity entity = new Entity("Article", k);

entity.setProperty("url", url);
entity.setProperty("headline", headline);
entity.setProperty("summary", summary);
entity.setProperty("tags", tags);
entity.setProperty("feed", feed);
entity.setProperty("image", image);
entity.setProperty("date", date);

datastore.put(entity);
}
}
}

计划任务

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/cron/mycronjob</url>
<description>Update DB</description>
<schedule>every 1 hours</schedule>
</cron>
</cronentries>

日志文件 Log File

最佳答案

我没有看到成功更新数据库日志条目,这可能意味着该 servlet 从未执行 - 否则您会看到一些错误消息。确保它在 web.xml 中正确映射到此 URL。

关于java - Google App Engine 数据存储区不实时运行,而是在本地运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28374526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com