Python, Bottle, MongoDB Создать функцию 500 Код ошибки - PullRequest
0 голосов
/ 13 февраля 2020

Я создаю службу REST, используя Bottle и MongoDB. Проблема в том, что я получаю код ошибки 500 при попытке вставить документ.

<code><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html>
        <head>
            <title>Error: 500 Internal Server Error</title>
            <style type="text/css">
              html {background-color: #eee; font-family: sans;}
              body {background-color: #fff; border: 1px solid #ddd;
                    padding: 15px; margin: 15px;}
              pre {background-color: #eee; border: 1px solid #ddd; padding: 5px;}
            </style>
        </head>
        <body>
            <h1>Error: 500 Internal Server Error</h1>
            <p>Sorry, the requested URL <tt>&#039;http://localhost:8080/create&#039;</tt>
               caused an error:</p>
            <pre>Unhandled exception

cURL

curl -H "Content-Type: application/json" -X POST -d '{"id" : "10011-2017-TEST","certificate_number" : 9278833,"business_name" : "ACME TEST INC.","date" : "Feb 20 2017","result" : "No Violation Issued","sector" : "Test Retail Dealer - 101"}' http://localhost:8080/create

Вещи Тем не менее, я могу успешно вставить документ, хотя я получаю код ошибки 500. Почему я получаю код ошибки 500? Я пытался реализовать обработку исключений для MongoDB и Bottle. Не уверен, что именно поэтому я получаю код. Если нет, как я могу правильно реализовать обработку исключений? Я прочитал об аборте, но у меня были проблемы с этим. Кроме того, когда я комментирую return result, я получаю код ответа 200, но я хочу вернуть идентификатор вставленного документа. Спасибо

Исходный код:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from bson import json_util
import json
import bottle
from bottle import route, run, request, abort, post, error
import pymongo
from pymongo import MongoClient
import datetime as datetime

connection = MongoClient('localhost', 27017)
db = connection['city']
collection = db['inspections']


@route('/create', method='POST')
def insert_document():

    try:
        data = request.json
        result = collection.insert_one(data).inserted_id
    except Exception, e:

        print ('EXCEPTION: ', e)

    return result

if __name__ == '__main__':

    run(host='localhost', port=8080)

1 Ответ

1 голос
/ 13 февраля 2020

Измените

    return result

на

    return str(result)

или просто полностью удалите строку.

...