亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

取消用戶特定的goroutines

取消用戶特定的goroutines

Go
瀟瀟雨雨 2021-04-09 15:19:57
我有一個應用程序(網絡應用程序),允許用戶使用twitter oauth登錄并提供自動的tweet刪除功能。用戶登錄到Web應用程序后,我將為每個用戶啟動一個goroutines(通過REST api),這將刪除用戶tweet列表。假設有100位用戶,每位用戶有500 ++條推文:如何在刪除過程的中間停止刪除go例程。例如:用戶30在啟動刪除過程2分鐘后請求停止刪除推文(這應該通過對我的應用程序的API調用來完成)??紤]到http請求和twitter API限制,創建go例程以使應用程序性能最大化的最佳實踐是什么?我應該為每個用戶創建go例程還是實現工作者池?信息:我正在將anaconda用于twitter客戶端后端
查看完整描述

2 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

您無法從外部停止goroutine,goroutine必須支持取消操作。有關詳細信息,請參閱:在Go中取消阻止操作。支持取消的常見方法是渠道和context套餐。

至于哪個對您更好,那太廣泛了。這取決于很多事情,但是對于示例/參考,標準庫的HTTP服務器在其自己的goroutine中為每個傳入的HTTP請求提供服務,并具有不錯的性能。

如果您的請求率很高,則可能值得創建和使用goroutine池(或使用執行此操作的第三方庫/路由器),但這實際上取決于您的實際代碼,您應該對應用進行評估/配置,以決定是否它是必需的還是值得的。

通常,我們可以說,如果與創建/計劃goroutine所需的開銷相比,每個goroutine所做的工作都“繁重”,通常只使用一個新的goroutine更為干凈。與啟動goroutine相比,在goroutine中訪問第三方服務(例如Twitter API)可能會增加數量級的工作和延遲,因此,您應該為每個功能啟動一個goroutine(不會造成性能損失)。


查看完整回答
反對 回復 2021-04-19
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

我該如何停止執行例程

您可以使用例如已完成的通道啟動goroutine,并在已完成的通道關閉后停止您的goroutine。

考慮到http請求和twitter API限制,創建go例程以使應用程序性能最大化的最佳實踐是什么?

這個問題太籠統了。


查看完整回答
反對 回復 2021-04-19
  • 2 回答
  • 0 關注
  • 274 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號