我正在将数据发布到Web2pyAPI。对于较短的数据字符串,POST成功而没有问题。稍长的数据字符串返回“Response[200]”,但该条目确实成功地发布到数据库
这是针对www.pythonanywhere.com上的web2py部署的。Web2Py、Python或www.pythonanywhere.com(运行Web2Py的地方)似乎没有任何有意义的限制,特别是对于我使用的数据大小长度(非常小)
这里有一个例子数据列表中的json_数据已成功发布数据列表中的json_data2'不存在json_数据的长度只有大约200个字符json_data2'约为1000。长度是我能找到的唯一决定成败的变量,但我发现很难相信长度是个问题:
import requests
from requests.auth import HTTPBasicAuth
from datetime import datetime
auth=HTTPBasicAuth('LoginID', 'Password')
json_data = '{"batt chrg": {"dat": "-999%", "measurement": "percent", "unit": "electric", "entrytype": "subunitStatus"}, "pv gen": {"dat": "-999 W", "measurement": "level", "unit": "electric", "entrytype": "subunitStatus"}}'
json_data2 = '{"download": {"entrytype": "subunitStatus", "dat": "9 Mbit/s", "measurement": "level", "unit": "comms"}, "batt chrg": {"entrytype": "subunitStatus", "dat": "94.4%", "measurement": "percent", "unit": "electric"}, "pv gen": {"entrytype": "subunitStatus", "dat": "543 W", "measurement": "level", "unit": "electric"}, "living space": {"entrytype": "subunitStatus", "dat": "72 F", "measurement": "level", "unit": "hvac"}, "ping": {"entrytype": "subunitStatus", "dat": "60 ms", "measurement": "level", "unit": "comms"}, "invert load": {"entrytype": "subunitStatus", "dat": "402 W", "measurement": "level", "unit": "electric"}, "humidity": {"entrytype": "subunitStatus", "dat": "45%", "measurement": "level", "unit": "hvac"}, "upload": {"entrytype": "subunitStatus", "dat": "8 Mbit/s", "measurement": "level", "unit": "comms"}}'
unitid = '19700111'
uploaded = 'no'
data = {
'unitid': unitid,
'uploaded': uploaded,
'time_stamp': str(datetime.now()),
'data_list': json_data2,
}
rq = requests.post(
"https://XXXXX.pythonanywhere.com/XXX/default/api/packed_data.json",
data=data,
auth=auth,
headers={'Connection':'close'}
)
web2py端的代码是标准的:
def api():
response.view = 'generic.'+request.extension
def GET(*args,**vars):
patterns = 'auto'
parser = db.parse_as_rest(patterns,args,vars)
if parser.status == 200:
return dict(content=parser.response)
else:
raise HTTP(parser.status,parser.error)
def POST(table_name,**vars):
return db[table_name].validate_and_insert(**vars)
def PUT(table_name,record_id,**vars):
return db(db[table_name]._id==record_id).update(**vars)
def DELETE(table_name,record_id):
return db(db[table_name]._id==record_id).delete()
return dict(GET=GET, POST=POST, PUT=PUT, DELETE=DELETE)
我希望得到一个“回复[200]”,并且该条目将发布到我的打包数据数据库中。我收到“响应[200]”,但没有记录任何条目
目前没有回答
相关问题 更多 >
编程相关推荐