如何解决ESPAsyncWebServer发送超过30kb的大网页
有人知道如何发送超过3万个网页数据吗?
我尝试了以下三种方法,但不幸的是,它们都失败了
AsyncWebServerResponse *response = request->beginResponse_P(200,"text/html",index_html);
request->send_P(200,index_html,processor);
AsyncWebServerResponse *response = request->beginResponse_P(200,processor);
即使添加了狗也无效
//---------------------------------------------------------------------------------------
server.on("/tst",HTTP_GET,[](AsyncWebServerRequest * request) {
AsyncResponseStream *response = request->beginResponseStream("text/html");
response->print("Start ********************** ");
for(int lop=0; lop<=1700; lop++){
response->print("<p>");
response->println(lop);
response->print("/<p>");
esp_task_wdt_reset();
}
request->send(response);
//---------------------------------------------------------------------------------------
我尝试了跟踪程序“ request-> send(response);” ,此命令将始终导致WDT错误!
E (48565) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (48565) task_wdt: - async_tcp (CPU 0/1)
E (48565) task_wdt: Tasks currently running:
E (48565) task_wdt: CPU 0: IDLE0
E (48565) task_wdt: CPU 1: IDLE1
E (48565) task_wdt: Aborting.
abort() was called at PC 0x400e431b on core 0
我还使用异常解码器进行检查,结果似乎是由WTD引起的。 // ------------------------------------------------ -------------------------------------------------- ---- 解码堆栈结果
0x4008ce38: invoke_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c line 155
0x4008d069: abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c line 170
0x400e431b: task_wdt_isr at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/task_wdt.c line 174
0x40151ccf: esp_pm_impl_waiti at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/pm_esp32.c line 492
0x400e56cb: esp_vApplicationIdleHook at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/freertos_hooks.c line 63
0x4008ad41: prvIdleTask at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c line 3382
0x4008954d: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143
// --------------------------------------------- -------------------------------------------------- -------
在WizNet W5100的LIB上,它可以使用server.println(F("<p>"));
来一次发送数据。发送大量记录数据时,这将具有非常好的优势。
与其立即发送数据并拼凑在一起,不如轻易地导致超时或内存损坏。
ESPAsyncWebServer是否具有类似的方法?还是其他选择?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。