momoko的异步连接失败了

时间:2013-01-24 05:57:53

标签: python tornado

我使用tornadoweb + momoko进行小型网络应用。昨天,我通过'Apache Branch'测试我的应用程序,我收到以下错误:

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

中的文档

1 个答案:

答案 0 :(得分:0)

这是因为momoko尝试在postgresql.conf中打开比max_connection更多的连接