我正在使用Goole App Engine任务队列API来学习如何使用它。但我不能让它在本地触发。当我上传到Google服务器时,我的应用程序就像一个魅力。但它不会在本地触发。我从管理员那里看到的只是任务列表。但是当他们的ETA来时,他们只是通过它。这就像他们运行但他们失败并等待重试。但我无法在命令行上看到这些事件。
当我尝试在管理面板上单击“运行”时,它会成功运行,我可以从命令行看到这些请求。我在Linux上使用App Engine SDK 1.3.4和google-app-engine-django。我试图从3小时后找到问题而我找不到它。调试GAE应用程序也很困难。因为调试消息不会出现在控制台屏幕上。
感谢。
答案 0 :(得分:1)
开发服务器不会自动运行任务,您必须自己设置它们。 这是一个设计功能,因此您可以看到运行它们时会发生什么,而不是在任何时候运行它们。
基本上,您的应用程序没有任何问题,它是开发服务器的一个功能。
答案 1 :(得分:0)
本地devserver确实支持现在的队列。本地开发中的模块技巧是,不是使用不同的域名,而是在不同(动态)端口上部署到localhost。将任务发送到队列时需要执行的操作需要添加队列正在侦听的主机以及队列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));
如果这对您有用,请告诉我。