【问题标题】:Can I block on a Google AppEngine Pull Task Queue until a Task is available?在任务可用之前,我可以阻止 Google AppEngine 拉取任务队列吗?
【发布时间】:2012-05-05 14:52:22
【问题描述】:

在任务可用之前,我可以阻止 Google AppEngine 拉取任务队列吗?或者,我是否需要轮询一个空队列,直到有任务可用?

【问题讨论】:

    标签: google-app-engine message-queue task-queue amazon-sqs amazon-sns


    【解决方案1】:

    您需要轮询队列。拉取队列的典型用例是有多个后端,每个后端一次获取一千个任务。

    对于一次几个小时队列中没有任务的用例,推送队列可能更适合。

    【讨论】:

    • 但是,对于高到达率的任务来说,推送队列可能很糟糕。所以我不会把这当作设计真理。相反,这似乎是当前解决方案的不足之处。 (赞成并接受;感谢您确认只能轮询拉取队列。)
    【解决方案2】:

    不是 100% 确定您的问题,但想尝试回答。由 cron 启动的拉取任务队列可能适用。节省运行后端的费用。我有需要序列化和存储的客户端日志数据。在线处理程序只是将客户端数据传递给任务拉取队列。 Cron 每分钟启动一次任务,每次运行最多有 10k 个日志项被序列化和存储。 (根据您的负载更改设置——这些远远超出了我的适度需求。)在这种情况下,队列充当缓冲区,负载峰值甚至分布在处理单元中。如果您想快速访问 TQ 数据或具有不可预测的负载,显然没有用。非常重要的是,日志数据序列化将数据写入减少了 1,000 倍。可能不适用于您的问题,所以我将以一个很大的 HTH 结束。 -史蒂夫

    【讨论】:

    • 我相信它会对某人有所帮助,所以我赞成。在我的问题中,我特别需要知道我是否可以阻止或是否必须进行投票。阻止会有很大帮助,但似乎是不允许的。阻塞(可选超时),如果可用,优于以各种可能的方式轮询。
    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多