任务队列的GAE错误。我的设置有问题吗? (蟒蛇)

时间:2014-04-11 15:28:59

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

我第一次尝试任务队列,虽然我认为我已经正确设置了所有内容,但是我收到了一个错误。

首先,这是我的queue.yaml文件:

total_storage_limit: 500M
queue:
- name: loader
  rate: 1/s
  bucket_size: 1

其次,这是我调用任务队列的代码(称为load.py)。它需要每天运行,因此我将此特定脚本作为cron作业运行。

for file in archiveList:
        taskqueue.add(queue_name='loader',url='/tasks/loadworker',params = {'ID':file[:-4],'XML':str(file)})

我的loadworker.py文件基本上是这样的:

class MainPage(webapp2.RequestHandler):
    def post(self):
        ID = self.request.get('ID')
        XML = self.request.get('XML')
        tmp = trialDatabase.get_or_insert(ID)
        #REST OF CODE GOES BELOW

以下是我看到的错误:

WARNING  2014-04-11 15:24:41,156 taskqueue_stub.py:1974] Task task936 failed to execute. This task will retry in 0.400 seconds
INFO     2014-04-11 15:24:41,156 module.py:627] loadandprocess: "POST /tasks/loadworker HTTP/1.1" 404 -

在我的脑海中,我想知道:任务队列“调用者”和任务队列“worker”需要在同一个模块中吗?我的任务队列工作器在我的默认app.yaml文件中,我的加载器在loadandprocess.yaml文件中。它是如何工作的,比如......每个任务工作者都会调用我的loadandprocess.yaml文件中指定的B4实例类?

谢谢!

修改

以下是app.yaml的相关部分:

- url: /tasks/loadworker
  script: loadworker.application
  login: admin

1 个答案:

答案 0 :(得分:2)

Loadworker返回404.任务队列任务必须返回http代码200,否则它将继续失败并重试。

确保loa​​dworker返回一个http响应,例如:

返回HttpResponse(“没错”,mimetype ='text / plain')