Appengine rdbms не работает при подключении к google cloud sql

Мы используем google cloud sql от appengine и довольно часто получаем следующую ошибку от нашего серверного экземпляра.

 File "/base/data/home/apps/s~app-prod/140-backend.363823736662468595/users/reports/__init__.py", line 360, in get_document_types
  cursor.execute('SELECT DISTINCT document_type FROM receipt WHERE ho_key=%s AND document_type IS NOT NULL', (str(ho.key())))
File "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 499, in execute
  self._DoExec(request)
File "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 375, in _DoExec
  response = self._conn.MakeRequest('Exec', request)
File "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 873, in MakeRequest
  response = self._MakeRetriableRequest(stub_method, request)
File "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 897, in _MakeRetriableRequest
  response = self.MakeRequestImpl(stub_method, request)
File "/python27_runtime/python27_lib/versions/1/google/storage/speckle/python/api/rdbms_apiproxy.py", line 68, in MakeRequestImpl
  raise OperationalError('could not connect: ' + str(e))

OperationalError: не удалось подключиться: ApplicationError: 1002

Есть ли у кого-нибудь еще опыт в этом?

Спасибо


person probably at the beach    schedule 30.12.2012    source источник


Ответы (1)


Эта ошибка и трассировка стека указывают на то, что вы используете устаревший и устаревший интерфейс google.appengine.api.rdbms.

Вы должны заменить его модулем MySQLdb, который задокументирован как лучший способ подключиться к Облачный SQL из App Engine на Python. Поскольку оба интерфейса соответствуют PEP 249, их можно заменить. Как описано по ссылке выше в GAE, вы захотите использовать создание соединения с MySQLdb.connect(unix_socket="/cloudsql/project:instance", ...).

person David    schedule 21.05.2015