伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Feign的超時時間如何設(shè)置呢?

jf_ro2CN3Fa ? 來源:三友的java日記 ? 2023-11-15 10:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天來聊一聊前段時間看到的一個面試題,也是在實際項目中需要考慮的一個問題,F(xiàn)eign 的超時時間如何設(shè)置?

Feign 的超時時間設(shè)置方式并不固定,它取決于 Feign 在項目中是如何使用的,不同的使用方式,超時時間設(shè)置方式也不大相同,甚至還可能有坑。

前置知識

由于文章會涉及到 Feign 的底層知識,如果不懂點 Feign 的基本概念的話,后面就看不下去了。

所以為了方便不了解 Feign 的小伙伴也能夠讀得懂文章,這里我就簡單地說說 Feign 的原理,點到為止,雖然不深入,但足夠應(yīng)付這篇文章了。

Feign 的作用

在項目中,我們經(jīng)常需要調(diào)用第三方提供的 Http 接口,此時我們就可以使用一些 Http 框架來實現(xiàn),比如 HttpClient。

publicclassHttpClientDemo{

publicstaticvoidmain(String[]args)throwsException{
//創(chuàng)建一個HttpClient
HttpClienthttpClient=HttpClientBuilder.create().build();

//構(gòu)建一個get請求
HttpGethttpGet=newHttpGet("http://192.168.100.1:8080/order/1");

//發(fā)送請求,獲取響應(yīng)
HttpResponsehttpResponse=httpClient.execute(httpGet);
HttpEntityhttpEntity=httpResponse.getEntity();

//讀出響應(yīng)值
Stringresponse=EntityUtils.toString(httpEntity);

System.out.println("Response:"+response);
}

}

如果項目中只有一兩個這種第三方接口這樣寫還行,但是一旦這種三方接口過多的話,每次都得這樣組裝參數(shù),發(fā)送請求,寫一堆同樣的代碼,就顯然很麻煩了。

所以為了簡化發(fā)送 Http 請求的開發(fā),減少重復(fù)代碼,F(xiàn)eign 就出現(xiàn)了。

Feign 是一個聲明式的 Http 框架

當(dāng)你需要調(diào)用 Http 接口時,你需要聲明一個接口,加一些注解就可以了。而像組裝參數(shù)、發(fā)送 Http 請求等重復(fù)性的工作都交給 Feign 來完成。

Feign 的原理

雖然有了接口,但是僅僅有接口是不夠的,因為接口又不能創(chuàng)建對象,我們得需要對象。

Feign 為了方便我們?yōu)榻涌趧?chuàng)建對象,提供的 Feign.Builder 這個內(nèi)部類。

8d711d92-82d4-11ee-939d-92fbcf53809c.png

這個類的作用就是解析接口的上的注解,為接口生成一個動態(tài)代理對象,后面通過這個代理對象就可以發(fā)送請求了。

這個內(nèi)部類有很多屬性,這些屬性都是 Feign 的核心組件。

在這些核心的組件中有一個叫 Client 的,上圖中我圈出來了。

8da0279a-82d4-11ee-939d-92fbcf53809c.png

這個 Client 類劃個重點,非常非常重要,本文討論的東西跟他有密切關(guān)系。

它只有一個方法 Response execute (Request request, Options options)

方法的第一個參數(shù) Request 就是封裝了 http 請求的 url、請求方法,請求頭、請求體之類的參數(shù)。

8db7c242-82d4-11ee-939d-92fbcf53809c.png

第二個參數(shù) Options 就是本文的主題,封裝了超時時間。

8dcc3a2e-82d4-11ee-939d-92fbcf53809c.png

返回值 Response就是封裝了一些響應(yīng)碼 status、響應(yīng)頭之類的。

8ddfaed8-82d4-11ee-939d-92fbcf53809c.png

所以通過方法的參數(shù)和返回值也可以猜出來,這個 Client 作用是用來組裝 HTTP 請求參數(shù),發(fā)送 HTTP 請求的。并且 HTTP 請求超時時間是根據(jù)傳給 Client 的 Options 參數(shù)來決定的。

8df27d92-82d4-11ee-939d-92fbcf53809c.png

Feign 單獨使用時超時時間設(shè)置

Feign 本身就是一個 HTTP 客戶端,可獨立使用,F(xiàn)eign 提供了兩種超時時間設(shè)置方式。

1、通過 Feign.Builder 設(shè)置

前面提到,F(xiàn)eign.Builder 的作用是為接口的動態(tài)代理對象的。

Feign.Builder 里面有很多屬性,其中就有關(guān)于超時時間的屬性 Options。

8e04ed10-82d4-11ee-939d-92fbcf53809c.png

如果你不設(shè)置,那么超時時間就是默認(rèn)的。

8e0f6c36-82d4-11ee-939d-92fbcf53809c.png

默認(rèn)的就是連接超時 10s,讀超時 60s。

所以可以通過設(shè)置 Feign.Builder 中的 options 來設(shè)置超時時間。

來個 demo

環(huán)境準(zhǔn)備,就是一個簡單的 SpringBoot 項目,引入一個 Feign 的依賴。

這里演示的是 Feign 原生的使用方式,脫離于 SpringCloud 環(huán)境,所以 Spring 的那些 @GetMappring 就不支持了,改用 Feign 本身提供的注解。

測試代碼

這里面的請求路徑都是不存在的,因為我們只關(guān)心傳給 Client 的 Options 參數(shù)值。

Client 在我們不設(shè)置的時候,就用默認(rèn)的實現(xiàn) Client.Default。

8e208a48-82d4-11ee-939d-92fbcf53809c.png

斷點打到 execute 方法的實現(xiàn),運行,走起。

8e39bab8-82d4-11ee-939d-92fbcf53809c.png

結(jié)果就是我們設(shè)置的 5s。

2、在接口方法參數(shù)設(shè)置

除了在通過 Feign.Builder 時設(shè)置之外,F(xiàn)eign 還支持在接口的方法參數(shù)上設(shè)置。

此時你只需要在接口的方法上加一個 Options 類型的參數(shù)。

@RequestLine("GET/user/{userId}")
UserqueryUser(@Param("userId")IntegeruserId,Request.Optionsoptions);

這樣在傳參數(shù)時就可以設(shè)置超時時間了。

Useruser=client.queryUser(123,newRequest.Options(3,TimeUnit.SECONDS,3,TimeUnit.SECONDS,true));

同樣地,debug 就可以看見我們設(shè)置的 3s 了。

8e4f74d4-82d4-11ee-939d-92fbcf53809c.png

這兩種設(shè)置超時時間的主要區(qū)別就是方法參數(shù)設(shè)置超時時間的優(yōu)先級高于 Feign.Builder 設(shè)置的超時時間。

用一張圖來總結(jié)一下上面的關(guān)系。

8e6506be-82d4-11ee-939d-92fbcf53809c.png

所以,如果你單獨使用 Feign 的時候,你就可以通過如上的兩種方式來設(shè)置超時時間。

SpringCloud 下 Feign 單獨使用超時時間設(shè)置

在 SpringCloud 環(huán)境下,只是對 Feign 進(jìn)行了一層包裝,所以即使沒有 Ribbon 和注冊中心,F(xiàn)eign 也是可以單獨使用的,但是用法有點變化

注解都換成 SpringMVC 的注解

接口上需要加 @FeignClient 注解

用 @EnableFeignClients 掃描這些接口

不過,默認(rèn)情況下 Feign 還是需要結(jié)合 Ribbon 來使用的。

如果你只想單獨使用 Feign,那么就設(shè)置一下 @FeignClient 注解的 url 屬性,指定請求的地址和端口就可以了。

8e78f232-82d4-11ee-939d-92fbcf53809c.png

所以,既然只是包裝,前面提到的兩種方式設(shè)置超時時間當(dāng)然可以繼續(xù)使用:

通過 Feign.Builder

通過接口的方法參數(shù)

方法參數(shù)設(shè)置形式跟前面提到的一模一樣,但是通過 Feign.Builder 來設(shè)置卻不太一樣。

由于 SpringCloud 會自己創(chuàng)建 Feign.Builder,不需要我們創(chuàng)建,所以在設(shè)置 Options 時,Spring 提供了兩種快捷方式來設(shè)置。不過最終還是設(shè)置到 Feign.Builder 中。

1、聲明一個 Options Bean

Spring 在構(gòu)建 Feign.Builder 的時,會從容器中查找 Options 這個 Bean,然后設(shè)置到 Feign.Builder 中。

@Configuration
publicclassFeignConfiguration{

@Bean
publicRequest.Optionsoptions(){
returnnewRequest.Options(8,TimeUnit.SECONDS,8,TimeUnit.SECONDS,true);
}

}

此時 debug 就可以看到設(shè)置到 Feign.Builder 的代碼。

8e98cd64-82d4-11ee-939d-92fbcf53809c.png

這段代碼在 FeignClientFactoryBean 中的 configureUsingConfiguration 方法中.

2、配置文件中設(shè)置

除了聲明 Bean 之外,Spring 還提供了通過配置文件的方式配置,如下:

同樣地,debug 就可以看見。

8ebb1dec-82d4-11ee-939d-92fbcf53809c.png

這段代碼在 FeignClientFactoryBean 中的 configureUsingConfiguration 方法中。

2、配置文件中設(shè)置

除了聲明 Bean 之外,Spring 還提供了通過配置文件的方式配置,如下:

feign:
client:
config:
default:
connectTimeout:10000
readTimeout:10000

同樣地,debug 就可以看見。

這段代碼在 FeignClientFactoryBean 中的 configureUsingConfiguration 方法中。

聲明 Bean 和配置文件都可以設(shè)置,那么同時設(shè)置哪種優(yōu)先級高呢?

如無特殊配置,遵守 SpringBoot 本身的配置規(guī)定

約定 > 配置 > 編碼

所以基于這個規(guī)定,配置文件的配置優(yōu)先級大于手動聲明 Bean 的優(yōu)先級。

到這,我們又學(xué)到了兩種 Spring 為了方便我們設(shè)置 Feign.Builder 提供的配置方式:

聲明 Options Bean

配置文件

把他們倆加到前面畫的圖中:

8ed7c9f6-82d4-11ee-939d-92fbcf53809c.png

所以,如果你使用了 SpringCloud 提供的方式來使用 Feign,那么就可以通過聲明 OptionsBean 和配置文件的方式更加方便地來設(shè)置超時時間。

最終其實還是通過 Feign.Builder 來設(shè)置的。

SpringCloud 下通過 Ribbon 來設(shè)置

當(dāng) Feign 配合 Ribbon 使用時,除了上面兩種方式之外,還可以通過 Ribbon 來設(shè)置超時時間。

但是這里我不知道你會不會好奇:

Ribbon 不是負(fù)載均衡組件,怎么可以設(shè)置超時時間?

跟 Ribbon 的定位有關(guān),除了負(fù)載均衡組件之外,Ribbon 也干發(fā)送 HTTP 請求的事,也就是不配合 Feign,他照樣可以發(fā)送 HTTP 請求。

來個簡單 demo

8eee0c34-82d4-11ee-939d-92fbcf53809c.png

解釋一下上面的代碼意思:

第一步,設(shè)置 user 服務(wù)的兩個服務(wù)實例地址;

第二步,獲取 user 服務(wù)對應(yīng)的 RestClient,這 RestClient 就可以用來發(fā)送 HTTP 請求;

第三步,構(gòu)建一個 HTTP 請求;

第四步,就是發(fā)送 HTTP 請求,以負(fù)載均衡的方式。

這樣,此時就會從兩個服務(wù)實例中根據(jù)負(fù)載均衡選取一個服務(wù)地址發(fā)送 HTTP 請求,Ribbon 既然可以發(fā)送 HTTP 請求,那么自然而然就可以設(shè)置超時時間

Feign 在整合 Ribbon 的時候,為了統(tǒng)一配置,就默認(rèn)將自己的超時時間交由 Ribbon 管理

所以,在默認(rèn)情況下,F(xiàn)eign 的超時時間可以由 Ribbon 配置。而 Ribbon 默認(rèn)連接和讀超時時間只有 1s,所以在默認(rèn)情況下,F(xiàn)eign 的超時時間只有 1s。

8f10323c-82d4-11ee-939d-92fbcf53809c.png

IClientConfig 是 Ribbon 的配置類,Ribbon 所有的配置都可以從 IClientConfig 中獲取。

所以,在默認(rèn)情況下,很容易就發(fā)生超時,不過我們可以通過配置文件修改即可。

ribbon:
ConnectTimeout:5000
ReadTimeout:5000

你知道你發(fā)現(xiàn)沒,上面說通過 Ribbon 設(shè)置 Feign 的超時時間,一直提到前面一直提到這個詞“默認(rèn)”。

什么情況下叫默認(rèn)呢?

所謂的默認(rèn),就是當(dāng)你不主動設(shè)置 Feign 的超時時間的時候,就是默認(rèn)。

換句話說,一旦你通過上面說的那些配置方式設(shè)置 Feign 的超時時間,就不是默認(rèn)了

此時通過 Ribbon 設(shè)置的超時時間就不會生效了。

Feign 是如何在默認(rèn)情況下將超時時間交給 Ribbon 管理的?

要想回答這個問題,就得先搬出前面反復(fù)提到的 Client 接口了。

在 SpringCloud 的環(huán)境下,有一個 Client 的實現(xiàn),叫 LoadBalancerFeignClient。

8f1509ce-82d4-11ee-939d-92fbcf53809c.png

通過名字就可以看出,帶有負(fù)載均衡的 Client 實現(xiàn),負(fù)載均衡的實現(xiàn)肯定是交給 Ribbon 來實現(xiàn)的。

所以,當(dāng) Feign 配合 Ribbon 時用的就是這個 Client 實現(xiàn)。

既然實現(xiàn)了 Client 接口,那就看看 execute 方法的實現(xiàn)邏輯。

8f24c01c-82d4-11ee-939d-92fbcf53809c.png

圖中 getClientConfig 方法就是判斷使用 Feign 或者 Ribbon 配置的核心邏輯。

核心的判斷邏輯就是這一行:

options==DEFAULT_OPTIONS

DEFAULT_OPTIONS 就是一個超時時間的常量。

8f56d156-82d4-11ee-939d-92fbcf53809c.png

當(dāng)上述判斷條件成立時,就會通過 this.clientFactory.getClientConfig(clientName) (clientName) 獲取到 Ribbon 配置。

由于這是 Ribbon 的邏輯,這里就不深扒了,知道是這個意思就行。

當(dāng)條件不成立時,用 Options 構(gòu)建一個 FeignOptionsClientConfig。

8f7993e4-82d4-11ee-939d-92fbcf53809c.png

FeignOptionsClientConfig 就是簡單地將 Options 配置讀出來,設(shè)置到父類 DefaultClientConfigImpl 超時時間配置上。

DefaultClientConfigImpl 就算你不知道是什么也無所謂,你能看出的一件事就是,超時時間用的是傳遞給 Client 的 Options 參數(shù)。

所以,綜上,我們的問題就變得非常 easy 了,那就是什么時候。

options==DEFAULT_OPTIONS

只有當(dāng)這個條件成立時,才使用 Ribbon 的配置。

這里我們先來捋一捋前面提到的東西。

前面我們反復(fù)提到,Client 的 Options 最終只來自于兩種配置:

Feign.Builder

方法參數(shù)

所以 DEFAULT_OPTIONS 這個 Options 一定是通過上面兩種方法中的其中一種設(shè)置的。

而方法參數(shù)是不可能設(shè)置的成 DEFAULT_OPTIONS。

因為這是我們控制的,只要我們參數(shù)不傳 DEFAULT_OPTIONS,那么永遠(yuǎn)都不可能是 DEFAULT_OPTIONS。

此時只剩下一種情況,那就是 Spring 在構(gòu)建在 Feign.Builder 的時候,設(shè)置成 DEFAULT_OPTIONS。

通過查找 DEFAULT_OPTIONS 的使用,我們可以追蹤到這么一段代碼。

8f84c480-82d4-11ee-939d-92fbcf53809c.png

這不就是前面提到的通過聲明 Bean 的方式來設(shè)置超時時間。

不同的是它加了 @ConditionalOnMissingBean,這個注解就是說,一旦我們自己沒有聲明 Options,就用他這個 Options。

到這終于真像大白了。

我們不設(shè)置超時時間,Spring 就會給 Feign.Builder 加一個 DEFAULT_OPTIONS 這個 Options。

在執(zhí)行的時候,發(fā)現(xiàn)是 DEFAULT_OPTIONS,說明我們沒有主動設(shè)置過超是時間,就會使用 Ribbon 的超時時間。

為了方便理清上面的邏輯,這里整一張圖。

8f94bcc8-82d4-11ee-939d-92fbcf53809c.png

雖然 Feign 可以使用 Ribbon 的超時時間,但是 Ribbon 的配置的優(yōu)先級是最最低的。

方法參數(shù) > Feign 配置文件 > 聲明 Options > Ribbon 配置

Feign or Ribbon 配置用哪個好?

其實我個人更傾向于使用 Ribbon 的配置方式。

因為 Ribbon 除了可以設(shè)置超時時間之外,還可以配置重試機(jī)制、負(fù)載均衡等其它的配置

為了簡化和統(tǒng)一管理配置,使用 Ribbon 來配置超時時間。

可能你會有疑問,F(xiàn)eign 也支持重試機(jī)制,為什么不選擇 Feign?

這是因為 Feign 重試機(jī)制沒有 Ribbon 的好。

Ribbon 重試的時候會換一個服務(wù)實例來重試,因為原來出錯的可能不可用。

而 Feign 并不會換一個服務(wù)實例重試,他并不知道上一次使用的是哪個服務(wù)實例,這就導(dǎo)致可能會出現(xiàn)在一個不可用的服務(wù)實例上多次重試的情況。

引入 Hystrix 時超時時間設(shè)置

如果你之前的確沒有研究過關(guān)于 Feign 超時時間的配置關(guān)系,那么此時你應(yīng)該有所收獲了。

但是這就結(jié)束了么?

不,事情沒那么簡單。

如果你的項目中使用了 Hystrix,那么就得小心前面說的那些配置了。

由于 Hystrix 跟 Feign 畢竟是一家人,所以當(dāng)引入 Hystrix 時,F(xiàn)eign 就跟之前不一樣了。

Hystrix 會去干一件事,那就是給每個 Feign 的 HTTP 接口保護(hù)起來,畢竟 Hystrix 就是干保鏢這個事的。

但是這沒保護(hù)還好,一保護(hù)問題就不自覺地出現(xiàn)了。

Hystrix 在保護(hù)的時候,一旦發(fā)現(xiàn)被保護(hù)的接口執(zhí)行的時間超過 Hystrix 設(shè)置的最大時間,就直接進(jìn)行降級操作。

怎么降級的,這里咱不關(guān)心,咱關(guān)心的是這個 Hystrix 超時的最大值是多少。

因為一旦這個時間小于 Feign 的超時時間,那么就會出現(xiàn) Http 接口正在執(zhí)行,也沒有異常,僅僅是因為執(zhí)行時間長,就被降級了。

而 Hystrix 的默認(rèn)的超時時間的最大值就只有 1s。

8fb15982-82d4-11ee-939d-92fbcf53809c.png

所以就算你 Feign 超時時間設(shè)置的再大,超過 1s 就算超時,然后被降級,太坑了……

所以我們需要修改這個默認(rèn)的超時時間的最大值,具體的配置項如下:

hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds:30000

并且時間上大致要符合下面這個原則:

Hystrix 超時時間 >= (連接超時時間 + 讀超時時間) * 重試次數(shù)

重試次數(shù)我們前面也提到了,雖然一般我們不設(shè)置,但是為了嚴(yán)謹(jǐn)還是得加上,因為一次 Http 接口的執(zhí)行時間肯定跟重試次數(shù)有關(guān),重試次數(shù)越多,時間就越長。

而連接超時時間 + 讀超時時間設(shè)置方式,前面提到很多次,不論是通過 Feign 本身設(shè)置還是通過 Ribbon 來設(shè)置,都是可以的。

總結(jié)

今天給大家扒了扒在不同使用條件下 Feign 的超時時間設(shè)置,總結(jié)起來大致如下:

單獨使用 Feign 時:通過 Feign.Builder 和方法參數(shù);

SpringCloud 環(huán)境下單獨使用 Feign:方法參數(shù)、配置文件、聲明 Options Bean;

跟 Ribbon 配合使用:通過 Ribbon 的超時參數(shù)設(shè)置;

跟 Hystrix 配合使用:修改默認(rèn)的超時時間,盡量符合 Hystrix 超時時間 >= (連接超時時間 + 讀超時時間) * 重試次數(shù)。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    16264
  • 負(fù)載均衡
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    12897
  • HTTP接口
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    2087

原文標(biāo)題:Feign 如何設(shè)置超時時間,不同情況下還真不一樣

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    ESP32-S2如何設(shè)置socket recv的超時時間

    請教一下: 如何設(shè)置socket recv的超時時間? 參考的是TCP server例程,有其它的提供超時的例程嗎? 謝謝!
    發(fā)表于 06-21 07:27

    請問lwIP連接超時時間如何設(shè)置

    目前的狀態(tài):使用connect連接到服務(wù)端,如果服務(wù)端掉線需要等待大概20s才會返回連接錯誤,時間有點長,沒看到connect有設(shè)置超時的功能,有沒有什么方法設(shè)置連接
    發(fā)表于 09-27 09:44

    從機(jī)indication接收超時時間怎么更改?

    從機(jī)向主機(jī)indication消息后,主機(jī)會回復(fù)一個cfm事件,當(dāng)主機(jī)沒有回復(fù)時,從機(jī)會超時一個超時事件,這個超時事件測試為30s,覺得有點長,當(dāng)一直找不到哪里可以更改這個超時時間的,
    發(fā)表于 03-09 10:00

    如何去配置IWDG的超時時間

    IWDG是什么?IWDG有哪些功能?怎么去使用IWDG?如何去配置IWDG的超時時間
    發(fā)表于 08-02 10:04

    如何設(shè)置WWDG窗口看門狗的超時時間

    窗口看門狗WWDG的主要功能有哪些?如何設(shè)置WWDG窗口看門狗的超時時間
    發(fā)表于 09-24 07:33

    空閑中斷IDLE的超時時間如何設(shè)置

    空閑中斷IDLE的超時時間如何設(shè)置
    發(fā)表于 12-10 06:23

    如何設(shè)置獨立看門狗的超時時間?有哪些注意事項?

    如何設(shè)置獨立看門狗的超時時間?有哪些注意事項?
    發(fā)表于 01-18 06:25

    請問一下TCP建立連接超時時間怎么修改

    請問一下TCP建立連接超時時間怎么修改
    發(fā)表于 08-25 14:44

    有什么辦法解決WWDG最大超時時間太短的問題

    我想在 STM32F407 上使用其中一個看門狗,但令我驚訝的是 WWDG 的最大超時時間如此之短(大約 50 毫秒,具體取決于時鐘速度)。這是非常有限制的,例如扇區(qū)擦除花費的時間比這長得多(并且是
    發(fā)表于 12-23 06:19

    ESP32-S2如何設(shè)置socket recv的超時時間

    請教一下:如何設(shè)置socket recv的超時時間?參考的是TCP server例程,有其它的提供超時的例程嗎?謝謝!
    發(fā)表于 02-20 07:30

    有沒有辦法設(shè)置在STA模式下獲取DHCP地址的超時時間

    大家好。有沒有辦法設(shè)置在 STA 模式下獲取 DHCP 地址的超時時間?我想稍微增加它看起來 - 在慢速或低信號網(wǎng)絡(luò)環(huán)境中使用 4 秒。
    發(fā)表于 02-24 06:26

    怎么計算一個modbus的超時時間

    要怎么才能計算一個modbus的超時時間
    發(fā)表于 10-11 06:33

    時控開關(guān)怎么設(shè)置時時間

    藍(lán)牙時控開關(guān):通過藍(lán)牙與手機(jī)連接,15米范圍內(nèi)使用手機(jī)對開關(guān)進(jìn)行無線控制。不用接觸開關(guān),就可以控制手動開、關(guān),也可以設(shè)置時時間自動開、關(guān)。
    的頭像 發(fā)表于 11-10 10:34 ?1.2w次閱讀

    socket連接超時如何處理

    實現(xiàn)以及網(wǎng)絡(luò)環(huán)境。 1. 理解Socket連接超時 在TCP/IP協(xié)議中,socket連接超時通常指的是在建立連接、發(fā)送數(shù)據(jù)或接收數(shù)據(jù)的過程中,由于沒有在預(yù)期時間內(nèi)完成操作,系統(tǒng)自動終止連接。這個預(yù)期
    的頭像 發(fā)表于 11-01 16:48 ?4392次閱讀

    socket 連接超時處理技巧

    在網(wǎng)絡(luò)編程中,Socket連接超時是一個常見的問題。處理超時的關(guān)鍵在于確保程序能夠優(yōu)雅地處理這些情況,避免程序崩潰或者無響應(yīng)。以下是一些處理Socket連接超時的技巧。 1. 設(shè)置合理
    的頭像 發(fā)表于 11-12 14:13 ?2908次閱讀