from pymongo.errors import DuplicateKeyError
def insert_duplicate_token(self):
try:
fields = ..
token = Token.create_a_new_document(fields)
token.save()
token = Token.create_a_new_document(fields)
token.save()
self.logger.info('success')
except DuplicateKeyError:
self.logger.exception('Duplicate caught')
except Exception, err:
self.logger.exception('failed...')
return False
引发的错误是 你试图保存重复的唯一密钥(E11000重复密钥错误集合:oauth_test.tokens索引:idx_access_token dup密钥:{:" gRULKp6sqPWRYDrJNrvaifMhlaC8qvzfZOpqTZLTPxHnQ691vT"})'
但是被Exception
捕获,而不是DuplicateKeyError
尝试了
import pymongo
pymongo.errors - does not exists
这是stacktrace
Traceback (most recent call last):
File "move_invalid_tokens_worker.py", line 91, in insert_duplicate_token
token.save()
File "/Users/ohadperry/.virtualenvs/oauth/lib/python2.7/site-packages/mongoengine/document.py", line 386, in save
raise NotUniqueError(message % unicode(err))
NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error collection: oauth_test.tokens index: access_token_1 dup key: { : "MIeJey0f3rWkedMZacDIjDMB3a04ilrbdieKaZ2BWt0lI0sATP" })
怪异..
答案 0 :(得分:1)
我用stackstrace回答了自己,感谢@Arount
from pymongo.errors import DuplicateKeyError
from mongoengine import NotUniqueError
def insert_duplicate_token(self):
try:
fields = ..
token = Token.create_a_new_document(fields)
token.save()
token = Token.create_a_new_document(fields)
token.save()
self.logger.info('success')
except (NotUniqueError, DuplicateKeyError), error:
self.logger.exception('Duplicate caught')
except Exception, error:
self.logger.exception('failed...')
return False