urequests micropython问题(多个POST请求到谷歌表格)

问题描述 投票:1回答:1

我想用esp8266和micropython直接向Google Forms发送数据(不使用IFTTT等外部服务)。我已经使用了IFTTT,但在这一点上对我来说没有用,我需要一个大于或等于100Hz的采样率,而你知道这超过了IFTTT的使用限制。我试着做了一个RAM缓冲区,但我得到了一个错误,说缓冲区超过了RAM的大小(4 MB),所以这就是为什么我试图直接做。

经过一段时间的尝试,我得到了它的一部分。我说 "部分 "是因为我必须在post-request之后做一个随机的get-request;我不知道为什么它能工作,但它能工作(这样我就能每隔一秒钟向Google Forms发送数据,或者更少)。我想问题是esp8266不能关闭与Google Forms的连接,当它试图做一个新的post-request时,它就会卡住,如果这是问题所在,我不知道如何用其他方法解决,有什么建议吗?完整的代码在这里。

ssid = 'my_network'
password = 'my_password'

import urequests

def do_connect():
    import network
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect(ssid, password)
        while not sta_if.isconnected():
            pass
    print('network config:', sta_if.ifconfig())


def main():
    do_connect()
    print ("CONNECTED")
    url = 'url_of_my_google_form'
    form_data = 'entry.61639300=example'   #have to change the entry
    user_agent = {'Content-Type': 'application/x-www-form-urlencoded'}
    while True:
        response = urequests.post(url, data=form_data, headers=user_agent)
        print ("DATA HAVE BEEN SENT")
        response.close
        print("TRYING TO SEND ANOTHER ONE...")
    response = urequests.get("http://micropython.org/ks/test.html")  #<------ RANDOM URL, I DON'T KNOW WHY THIS CODE WORKS CORRECTLY IN THIS WAY
    print("RANDOM GET:")
        print(response.text)
        response.close


if __name__ == '__main__':
    main()

谢谢你的时间,伙计们。另外,我以前也试过用这个代码,但它不工作。如果没有随机获取请求,在发布一两次后就会卡住。

while True:
        response = urequests.post(url, data=form_data, headers=user_agent)
        print ("DATA HAVE BEEN SENT")
        response.close
        print("TRYING TO SEND ANOTHER ONE...")
http python-requests esp8266 esp32 micropython
1个回答
-1
投票

不应该是 response.close() (带括号)? 🤔,

没有括号的情况下,您可以访问一个(不存在)的 财产 close 对象的 response 而不是调用 办法 close(),不要真正关闭连接。这可能导致内存溢出。

© www.soinside.com 2019 - 2024. All rights reserved.