【问题标题】:Google AppEngine and Threaded WorkersGoogle AppEngine 和线程工作者
【发布时间】:2012-03-20 14:21:58
【问题描述】:

我目前正在尝试使用 Google AppEngine 开发一些东西,我正在使用 Python 作为我的运行时,并且需要一些关于设置以下内容的建议。

我正在运行一个向客户端提供 JSON 数据的网络服务器,数据来自我必须从中提取数据的外部服务。

我需要做的是运行一个后台系统,它将检查内存缓存以查看是否有任何所需的 ID,如果有一个 ID,我需要从外部源获取该 ID 的一些数据并放置memecache 中的数据。

如果有多个 id,> 30 我需要能够尽可能快速有效地提取所有 30 个请求。

我是 Python 开发和 AppEngine 的新手,所以你们能给的任何建议都会很棒。

谢谢。

【问题讨论】:

    标签: python multithreading google-app-engine queue


    【解决方案1】:

    您可以使用“后端”或“任务队列”在后台运行进程。任务有 10 分钟的运行时间限制,后端没有运行时间限制。还有一个cronjob机制,可以定时触发请求。

    您可以使用“URLFetch”服务从外部服务器获取数据。

    【讨论】:

    • s/20/10/分钟任务队列的截止日期
    【解决方案2】:

    请注意,使用 memcache 作为前端和后端之间的通信机制是不可靠的——memcache 的内容可能随时被部分或全部擦除(并且不时发生)。

    还请注意,您无法查询 memcache,因为您不知道提前知道确切的键。使用任务队列对请求进行排队可能比使用 memcache 或使用数据存储作为存储机制更好。

    【讨论】:

    • 所以如果我排队一个任务,它会被正确执行一次,然后在任务中我可以重新排队?
    • 是的,任务可以创建其他任务。但是,如果一个任务返回一个 HTTP 错误,它将被重试(使用指数回退)。请参阅我们出色的任务队列文档。 code.google.com/appengine/docs/python/taskqueue
    猜你喜欢
    • 2016-11-20
    • 2013-03-15
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2011-05-06
    相关资源
    最近更新 更多