我有一個應用程序(網絡應用程序),允許用戶使用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(不會造成性能損失)。

蠱毒傳說
TA貢獻1895條經驗 獲得超3個贊
我該如何停止執行例程
您可以使用例如已完成的通道啟動goroutine,并在已完成的通道關閉后停止您的goroutine。
考慮到http請求和twitter API限制,創建go例程以使應用程序性能最大化的最佳實踐是什么?
這個問題太籠統了。
- 2 回答
- 0 關注
- 274 瀏覽
添加回答
舉報
0/150
提交
取消