0

私は tornadoweb + momoko を使用して小さな Web アプリケーションを作成しています。昨日、「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のドキュメントを使用しました

4

1 に答える 1

0

これは、momokoがpostgresql.confのmax_connectionよりも多くの接続を開こうとしたために発生しました

于 2013-02-07T07:01:14.650 に答える