Python 在WSGI中使用PyDBLite的Flask RESTful API失败
总结:Python 在WSGI中使用PyDBLite的Flask RESTful API失败,python,api,flask,wsgi,flask-restful,Python,Api,Flask,Wsgi,Flask Restful,总结: 我使用PyDbLite为内存中的数据库创建了一个带有flaskrestful的超级简单API。当运行“pythonapi.py”时,它工作得很好。但当我将其放入apache2 wsgi时,它开始失败: 文件“/usr/local/lib/python2.7/dist packages/pydblite/pydblite.py”,第471行,在getitem 返回自我记录[键] AttributeError:“\u BasePy2”对象没有属性“records” 详情: 主应用程序:/va
我使用PyDbLite为内存中的数据库创建了一个带有flaskrestful的超级简单API。当运行“pythonapi.py”时,它工作得很好。但当我将其放入apache2 wsgi时,它开始失败: 文件“/usr/local/lib/python2.7/dist packages/pydblite/pydblite.py”,第471行,在getitem 返回自我记录[键] AttributeError:“\u BasePy2”对象没有属性“records” 详情: 主应用程序:/var/www/api/api.py
from flask import Flask
from flask_restful import Api, Resource
from datetime import datetime, timedelta
from pydblite.pydblite import Base
app = Flask(__name__)
api = Api = Api(app)
DATE_FORMAT = "%m/%d/%Y, %H:%M:%S"
MINUTES_TO_ADD = 0
db = Base("persist", save_to_file=False)
rec_id = 69
def setup_db():
db.create("latch", "id", "IsSet", "LastSet")
#db.insert(id=rec_id, IsSet=0, LastSet=datetime.now())
rec_id = db.insert(IsSet=0, LastSet=datetime.now())
class LatchInputOn(Resource):
def get(self, set):
#records = db(id=rec_id)
#record = records[0]
record = db[rec_id]
return {"IsSet": record["IsSet"], "LastSet": record["LastSet"].strftime(DATE_FORMAT)}
def post(self, set):
#records = db(id=rec_id)
#record = records[0]
record = db[rec_id]
current_time = datetime.now()
#if we are unsetting the latch we need to make sure that it has been
# at least 2 minutes since the last set
if set == 0:
if record["IsSet"] == 1:
#we are trying to unset the latch
deadline_date = record["LastSet"] + timedelta(minutes = MINUTES_TO_ADD)
if current_time >= deadline_date:
db.update(record, IsSet=set, LastSet=current_time)
else:
db.update(record, IsSet=set, LastSet=current_time)
return
api.add_resource(LatchInputOn, "/<int:set>")
if __name__ == "__main__":
setup_db()
app.run() #for wsgi
#app.run(host="192.168.0.2", port="5000", debug=True) #for running natively
/etc/apache2/sites available/000-default.conf
WSGIDaemonProcess api user=pi group=pi threads=5 home=/var/www/api/ python-path=/var/www/api:/usr/bin/python
WSGIProcessGroup api
WSGIScriptAlias /api /var/www/api/api.wsgi
<directory /var/www/api>
WSGIProcessGroup api
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
Order deny,allow
Allow from all
</directory>
wsgidaemonprocessapi user=pi group=pi threads=5 home=/var/www/api/python path=/var/www/api:/usr/bin/python
WSGIProcessGroup api
WSGIScriptAlias/api/var/www/api/api.wsgi
WSGIProcessGroup api
WSGIApplicationGroup%{GLOBAL}
WSGIScript正在重新加载
命令拒绝,允许
通融
WSGIDaemonProcess api user=pi group=pi threads=5 home=/var/www/api/ python-path=/var/www/api:/usr/bin/python
WSGIProcessGroup api
WSGIScriptAlias /api /var/www/api/api.wsgi
<directory /var/www/api>
WSGIProcessGroup api
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
Order deny,allow
Allow from all
</directory>