python - 带有 Flask 的 JSON API - 500 内部服务器错误
问题描述
我是 Flask 和 API 方面的绝对新手。我想用 FLASK 在 localhost 中使用 API 托管我的 Json。但它说
500内部服务器错误。
在我第一次尝试运行这个 Flask 时,它给了我这个 500 Internal Server 错误。然后我从 Ubuntu 转到 Windows 玩游戏和浏览(我试着解释清楚)。我又回到了 Ubuntu。
而且我正在做与我第一次尝试时完全相同的事情,我得到了这个 500 Internal Server 错误。但我不知道,这一次有效。而且我确信我什么都不做,就像我的第一次尝试一样
这是代码
from flask import Flask
from flask import request
from pymongo import MongoClient
from bson.json_util import dumps
import json
client = MongoClient()
db = client.dbCrawlTwint
app = Flask(__name__)
@app.route("/get_statistic_year", methods = ['GET'])
def get_statistic_year():
statisticYear = db.statisticYear.find()
return dumps(statisticYear)
@app.route("/get_statistic_month", methods = ['GET'])
def get_statistic_month():
statisticMonth = db.statisticMonth.find()
return dumps(statisticMonth)
@app.route("/get_statistic_week", methods = ['GET'])
def get_statistic_week():
statisticWeek = db.statisticWeek.find()
return dumps(statisticWeek)
@app.route("/get_statistic_day", methods = ['GET'])
def get_statistic_day():
statisticDay = db.statisticDay.find()
return dumps(statisticDay)
这是error.log
INFO:werkzeug:127.0.0.1 - - [01/Aug/2019 13:21:13] "GET /get_statistic_month HTTP/1.1" 500 -
ERROR:restAPI:Exception on /get_statistic_month [GET]
Traceback (most recent call last):
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/alramdein/Documents/Angular-exp/angular-statistic/flask/restAPI.py", line 21, in get_statistic_month
return dumps(statisticMonth)
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/bson/json_util.py", line 383, in dumps
return json.dumps(_json_convert(obj, json_options), *args, **kwargs)
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/bson/json_util.py", line 421, in _json_convert
return list((_json_convert(v, json_options) for v in obj))
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/bson/json_util.py", line 421, in <genexpr>
return list((_json_convert(v, json_options) for v in obj))
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/pymongo/cursor.py", line 1225, in next
if len(self.__data) or self._refresh():
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/pymongo/cursor.py", line 1140, in _refresh
self.__send_message(q)
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/pymongo/cursor.py", line 1010, in __send_message
helpers._check_command_response(first)
File "/home/alramdein/anaconda3/envs/eventenv/lib/python3.6/site-packages/pymongo/helpers.py", line 155, in _check_command_response
raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: there are no users authenticated
INFO:werkzeug:127.0.0.1 - - [01/Aug/2019 13:21:14] "GET /get_statistic_month HTTP/1.1" 500 -
解决方案
我注意到有一个
pymongo.errors.OperationFailure:没有经过身份验证的用户
当我发布这个问题时
只需在 Windows 中添加它
client = MongoClient('mongodb://user:pass@localhost:27017/')
或者这个在 Linux
client = MongoClient('mongodb://user:pass@172.17.0.1:27017/')
我没有删除它,因为其他人可能对我有同样的问题
推荐阅读
- django - CreateView中的Django多个模型
- variables - Excel vba - 命令取决于先前的命令
- html - 如何使我的可点击垂直下拉菜单仅使用 css 正常工作?
- c - 在C中存储来自字符串的输入十六进制值
- cucumber - 我可以在我的 Cucumber Steps 中处理 int 和 float 吗?
- c# - 如何通过 LINQ 将同一类的对象属性合并在一起
- reactjs - 我如何告诉 React 中的子元素去寻找它的视频元素?
- acumatica - Acumatica 和 Avalara 未能征税
- python - 如何在 pygtk2.0 中检查 CheckButton 是否处于活动状态?
- excel - 下标超出范围错误的文件目录问题