【问题标题】:Task Queue stopped working任务队列停止工作
【发布时间】:2010-05-29 15:35:55
【问题描述】:

我正在使用 Goole App Engine 任务队列 API 来学习如何使用它。但我无法让它在本地触发。当我上传到 Google 服务器时,我的应用程序运行起来非常棒。但它不会在本地触发。我从管理员那里看到的只是任务列表。但是当他们的 ETA 到来时,他们只是通过了它。就像他们运行但他们失败并等待重试一样。但是我在命令行上看不到这些事件。

当我尝试在管理面板上单击“运行”时,它运行成功,我可以从命令行看到这些请求。我在带有 google-app-engine-django 的 Linux 上使用 App Engine SDK 1.3.4。我正在尝试从 3 小时内找到问题,但我找不到它。调试 GAE 应用程序也非常困难。因为调试消息不会出现在控制台屏幕上。

谢谢。

【问题讨论】:

    标签: python google-app-engine task-queue


    【解决方案1】:

    开发服务器不会自动运行任务,你必须自己设置它们。 这是一项设计功能,因此您可以看到运行它们时会发生什么,而不是它们在任何时候运行。

    本质上,您的应用程序没有任何问题,它是开发服务器的一项功能。

    【讨论】:

    • 开发服务器从 1.3.4 开始自动运行任务。这是一项新功能。
    • 我不知道它没有记录。但是,我猜对文档错误的容忍度很高,因为如果人们抱怨,他们会感到有改进自己文档的压力。由于我没有那种压力,我倾向于抱怨。
    【解决方案2】:

    本地开发服务器现在确实支持队列。本地开发中模块的诀窍在于,在不同(动态)端口上部署到本地主机,而不是使用不同的域名。将任务发送到队列时需要执行的操作需要添加队列正在侦听的主机以及队列 URL。这是一个Java示例(对不起)。 Python也有类似的方法:

        ModulesService moduleService = ModulesServiceFactory.getModulesService();
        String hostNameToQuery = moduleService.getVersionHostname("worker_module_name", null);
        logger.info("hostNameToQuery=" + hostNameToQuery);
        TaskOptions options = TaskOptions.Builder
                .withUrl("/workerQueueURL")
                .header("Host", hostNameToQuery)
                .param("taskKey", taskKeyString)
                .retryOptions(RetryOptions.Builder.withTaskRetryLimit(0));
    

    如果这对你有用,请告诉我。

    【讨论】:

      猜你喜欢
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 2022-11-07
      • 2013-09-01
      • 2012-02-09
      • 2015-06-12
      • 2011-06-24
      相关资源
      最近更新 更多