2013-01-24 134 views
0

我使用tornadoweb + momoko製作小型web應用程序。昨天,我已經「阿帕奇分公司」測試我的應用程序,我得到了以下錯誤:異步連接失敗momoko

ERROR:root:Cannot send error response after headers written 
ERROR:root:Uncaught exception POST /url/is/here/ (127.0.0.1) 
HTTPRequest(protocol='http', host='localhost:8888', method='POST', uri='/url/is/here/', version='HTTP/1.1', remote_ip='127.0.0.1', body='some_data_here', headers={'Content-Length': '96', 'Connection': 'close', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'localhost:8888', 'Accept-Encoding': 'gzip'}) 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/site-packages/tornado/web.py", line 1021, in _stack_context_handle_exception 
    raise_exc_info((type, value, traceback)) 
    File "/usr/lib/python2.7/site-packages/tornado/stack_context.py", line 259, in _nested 
    yield vars 
    File "/usr/lib/python2.7/site-packages/tornado/stack_context.py", line 229, in wrapped 
    callback(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/momoko/pools.py", line 313, in _io_callback 
    state = self._conn.poll() 
OperationalError: asynchronous connection failed 

,當我問這是下面顯示TestWay處理此消息顯示:

class TestWay(BaseHandler): 

    @property 
    def db(self): 
     if not hasattr(self.application, 'db'): 
      self.application.db = momoko.AsyncClient({ 
       'host': 'localhost', 
       'database': 'database_name', 
       'user': 'user_name', 
       'password': 'password_here', 
       'min_conn': 1, 
       'max_conn': 5, 
       'cleanup_timeout': 10 
      }) 
     return self.application.db 

    @web.asynchronous 
    @gen.engine 
    def post(self, *args, **kwargs): 
     self.db.execute(
      "SELECT key FROM table WHERE id = %s AND deleted = false", 
      (self.get_argument('id', 1),), 
      callback = (yield gen.Callback('callback_name')) 
     ) 

     cursor = yield gen.Wait('callback_name') 

     if cursor is not None: 
      result = cursor.fetchall() 
      if len(result) != 0 and len(result[0]) != 0: 
       response = result[0][0] 
     else: 
      response = u'some message' 
     self.write(response) 
     self.finish() 

我用從文件http://momoko.61924.nl/examples.html

回答

0

這是因爲momoko試圖在postgresql.conf中打開比max_connection更多的連接而造成的