【问题标题】:Maxmind database file too large for AppEngine AppMaxmind 数据库文件对于 AppEngine 应用程序来说太大
【发布时间】:2013-01-21 21:28:14
【问题描述】:

我正在尝试将 MaxMind geoIP 数据库部署为部署在 Google AppEngine 中的 Java 应用程序的一部分。当我们使用免费版本时一切正常,但在升级到付费(和更大)数据库时,尝试部署会出现错误:

File /tmp/appcfg4412552511405829763.tmp/WEB-INF/GeoIPCity.dat is too large (limit 32000000 bytes)

据我所知,我启用了 jar 拆分,但这无济于事,因为这不是 jar(将其重命名为 .jar 也不会神奇地修复它:)。有什么方法可以将这么大 (~48mb) 的文件部署为 AppEngine 应用程序的一部分?

我的后备计划是将文件推送到 Cloud Storage 并从那里获取。不幸的是,Maxmind 的 Java 代码真的真的需要一个文件——不是流,不是阅读器,不是字节[],而是文件——这在 AppEngine 中很难获得。在我最终重写一堆东西之前,我想我会看看是否有人已经设法解决了这个问题。

【问题讨论】:

    标签: java google-app-engine maxmind


    【解决方案1】:

    在 GAE 上,max application file size is 32Mb

    AFAIK 你无法解决这个问题。如果您可以将其拆分为较小的文件,那将是最好的。

    【讨论】:

    • 这就是我最终要做的,尽管我仍然需要重写 Maxmind 的代码来支持这一点。从云存储中提取整个文件太慢了。
    • 我们将文件拆分为两个 zip 文件,然后我们设法将它们上传到读取这两个文件的代码上,并使用 java.util.zip.ZipInputStream 将它们组合在一起
    【解决方案2】:

    当您在 appengine 请求标头中免费获取地理位置、国家、地区和城市时,为什么要使用 3rd 方 geoip 数据库文件来获取此信息?

    我的建议是为此目的分别使用 x-appengine-geopoint、-country、-region 和 -city 标头。

    这应该可行,但需要您在请求级别捕获 thor 标头并与其他用户数据一起存储在数据存储中。

    【讨论】:

    • 调用者实际访问我们的 Web 服务并不是我们想要找到的位置,因此标头没有任何帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 2021-12-15
    • 2013-06-07
    • 1970-01-01
    • 2011-04-10
    • 2021-04-23
    • 1970-01-01
    • 2020-03-03
    相关资源
    最近更新 更多