Есть ли предел для данных, которые можно публиковать в web2py? - PullRequest
0 голосов
/ 21 сентября 2019

Я публикую данные в API web2py.Для короткой строки данных POST успешно выполняется без проблем.Несколько более длинная строка данных возвращает «Response [200]», но запись успешно отправляется в базу данных.

Это для развертывания web2py на www.pythonanywhere.com.Кажется, что нет никакого значимого ограничения для Web2Py, Python или www.pythonanywhere.com (где работает web2py), особенно для длин данных, которые я использую (действительно крошечные).

Вотпример.'json_data' в data_list успешно публикует сообщения.'json_data2' в data_list нет.Длина «json_data» составляет всего около 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)

Я ожидаю «Response [200]» и для записи, чтобы опубликовать в моей базе данных pack_data.Я получаю «Ответ [200]», но запись не записывается.

...