任务队列停止工作

1 投票
2 回答
504 浏览
提问于 2025-04-15 23:19

我在玩谷歌应用引擎的任务队列API,想学习怎么用它。但是我在本地无法触发这个功能。我的应用在上传到谷歌服务器后运行得很好,但在本地却不行。我在管理界面看到的只是任务列表,但当它们的预计时间到了,任务就会被跳过。就好像它们在运行,但失败了,然后在等着重试。不过我在命令行上看不到这些事件。

当我在管理面板上点击“运行”时,它能成功运行,我也能在命令行上看到这些请求。我在Linux上使用的是App Engine SDK 1.3.4,搭配google-app-engine-django。我已经找了三个小时的问题,但还是没找到。调试GAE应用也很困难,因为调试信息不会出现在控制台上。

谢谢。

2 个回答

0

现在本地开发服务器支持队列了。在本地开发时,模块的一个技巧是,不是用不同的域名,而是把应用部署到本地的不同(动态)端口上。当你想把任务发送到队列时,需要添加队列监听的主机地址和队列的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));

如果这个方法对你有用,记得告诉我哦。

1

开发服务器不会自动运行任务,你需要自己手动启动它们。这是设计上的一个特点,这样你可以看到每次运行任务时发生了什么,而不是它们在任何时候都自动运行。

其实,你的应用程序没有问题,这只是开发服务器的一个功能。

撰写回答