2015-11-07 174 views
0

我正在開發一個使用gae和python的matchmaking系統。我找到了一個自動匹配系統,我找到了任務隊列。我實現了一個cron作業,每10分鐘運行一次以添加一個隊列。然而,我發現了以下錯誤: (SessionID的只是一個DB模式) queue_generator.pyGoogle App Engine任務隊列錯誤

import webapp2, time 
from main import SessionID 
from google.appengine.api import taskqueue 
from google.appengine.ext import db 

class Game(db.Model): 
    Users = db.ListProperty(str) 
    Score = db.IntegerProperty() 
    Turn = db.StringProperty() 
class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     taskqueue.add(url='/matchcreator',params={"id":str(time.time())}) 

class Gamegenerator(webapp2.RequestHandler): 
    def get(self): 
     while True: 
      q = Queue.get() 
      if len(q.queue) >= 4: 
       sids = [] 
       for i in range(0,3): 
        sids.append(q.queue[i]) 
        q.queue.remove(i) 
        q.put() 
     return self.response.set_status(204) 
    def post(self): 
     while True: 
      q = Queue.get() 
     if len(q.queue) >= 4: 
      sids = [] 
      for i in range(0,3): 
       sids.append(q.queue[i]) 
       q.queue.remove(i) 
       q.put() 
    return self.response.set_status(204) 

app = webapp2.WSGIApplication([ 
    ('/queue_generator', MainHandler), 
    ("/matchcreator",Gamegenerator) 
], debug=True) 

爲什麼這個錯誤發生的歷史:

When running /queue_generator: 
Traceback (most recent call last): 
File"/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in Handle 
    result = handler(dict(self._environ), self._StartResponse) 
TypeError: 'module' object is not callable 

我已經是該代碼?

編輯

的app.yaml

application: brobbinsgame 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

handlers: 
- url: /favicon\.ico 
    static_files: favicon.ico 
    upload: favicon\.ico 
- url: /css 
    static_dir: css 
- url: /home.css 
    static_files: style.css 
    upload: style.css 
    application_readable: true 
- url: /register 
    script: register.app 
- url: /logout 
    script: logout.app 
- url: /line 
    script: line.app 

- url: /queue_generator 
    script: queue_generator 
    login: admin 
- url: /home 
    script: home.app 
- url: /resetsid 
    script: resetsid.app 
    login: admin 
- url: .* 
    script: main.app 

libraries: 
- name: webapp2 
    version: "2.5.2" 
- name: pycrypto 
    version: "latest" 
+0

請顯示您的app.yaml。 –

+0

@丹尼羅斯曼補充說。 – Dashadower

回答

1

對於除「/ queue_generator」以外的每個路徑,您已正確引用了app對象,但對於該路徑,您需要直接引用該模塊,您需要以完全相同的方式對其進行定義:

- url: /queue_generator 
    script: queue_generator.app 
    login: admin 

另請注意,無法訪問「/ matchcreator」:「/ queue_generator」是唯一將被路由到該文件的URL。您還需要在app.yaml中公開「/ matchcreator」,或者執行更常見的操作,即將所有路徑路由到導入所有處理程序並定義特定路由的主應用程序。

+0

謝謝!我如何在app.yaml中公開/ matchcreator,所以如果我去url http:///...appspot.com/matchcreator那麼它會顯示matchcreator類? – Dashadower

+0

與您公開所有其他路徑的方式相同。 –

0

這個錯誤發生,因爲你調用一個模塊,而不是一類..調用應該是:Module.Class.Method()

相關問題