首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >烧瓶Pymongo异常管理

烧瓶Pymongo异常管理
EN

Stack Overflow用户
提问于 2013-12-14 10:01:10
回答 1查看 1.1K关注 0票数 0

我有一个像这样定义的酒瓶路线:

代码语言:javascript
复制
@app.route('/api/v0.1/getTopPosts', methods = ['POST'])
@auth.login_required
def get_top_posts():
  if not request.json or not 'page' in request.json:
    abort(400)

  resultsPerQuery = 10
  page = int(request.json['page'])
  skip = ( page - 1) * resultsPerQuery;

  postsToReturn = []
  errorDidOccur = False

  #get top posts
  try:
      topPostsReturn = db.collection.find({"isActive":"yes","state":{ "$BAD" : False }}).sort('rank',1).limit(resultsPerQuery).skip(skip)

      for topPost in topPostsReturn:
        postsToReturn.append(db.collection.find_one({'_id':topPost['posts_id']}).copy())

  except pymongo.errors.OperationFailure as e:
      errorDidOccur = True


  if errorDidOccur:
      reply = {
          'reply' : 'failure',
          'error' : e,
          'data' : None
      }
  else:
      reply = {
          'reply' : 'success',
          'error' : None,
          'data' : postsToReturn
      }

  return dumps(reply)

我插入了$BAD以生成OperationalFailure异常。我遇到的问题是'e‘不能被JSON序列化。我得到:

代码语言:javascript
复制
TypeError: OperationFailure(u'database error: invalid operator: $BAD',) is not JSON serializable

如何将错误报告回来?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-14 10:03:19

使用

代码语言:javascript
复制
'error' : e.message,

而不是

代码语言:javascript
复制
'error' : e,
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20581902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档