1
我有點困惑,因爲我沒有設置任何工人(在Heroku上),當我做 Resque.enqueue作業被添加到隊列(但未完成),所以我假設主線程生成隊列。由主線程或工作人員創建Resque隊列嗎?
由於我使用的是Redis To Go,這不會破壞使用像Resque這樣的後臺進程的目的,因爲Redis To Go本身就是一個外部託管數據庫,所以主線程的初始寫入過程添加了作業到隊列可能是不可預測的?
我有點困惑,因爲我沒有設置任何工人(在Heroku上),當我做 Resque.enqueue作業被添加到隊列(但未完成),所以我假設主線程生成隊列。由主線程或工作人員創建Resque隊列嗎?
由於我使用的是Redis To Go,這不會破壞使用像Resque這樣的後臺進程的目的,因爲Redis To Go本身就是一個外部託管數據庫,所以主線程的初始寫入過程添加了作業到隊列可能是不可預測的?
當您致電Resque.enqueue
時,會發生什麼情況:Resque連接到Redis數據庫,並添加稍後調用作業所需的信息。然後,工作人員連接到Redis,從第一個添加的工作中彈出,做到這一點,並重復。
所以,「主」線程確實連接到Redis。它是一個外部數據庫的事實並不重要。我的意思是,對於使用Mongo數據庫插件的人來說,Mongo數據庫也是外部託管的。這個想法是,您要執行的任務比將其添加到Redis需要的時間要長。
我們添加到隊列中的工作是發送電子郵件通知(使用Heroku上的sendgrid插件)。我不確定使用主線程調用外部應用程序(redis去)是否合理,以避免調用另一個外部應用程序(sendgrid)。 – sthapit
嘗試計算通過sendgrid發送郵件所需的時間,以及將作業添加到隊列所需的時間。如果將它添加到隊列中速度明顯更快,那就去做吧。否則,這只是另一個步驟,我會刪除Resque部分。 – henrikhodne
好。那就是調用像sendgrid這樣的外部應用程序 - 這是完全不可預測的。大部分時間完全沒有時間,但有時會停頓1-2秒。我不知道如何將工作添加到使用redis的隊列中去 - 迄今爲止速度很快,但我們沒有使用足夠長的時間來真正知道。 – sthapit