0

我想寫一個腳本,安排一天中的各種事情。不幸的是,它每天會做100多個不同的任務,接近500個,未來可能達到10,000個。你如何在生產中部署cron腳本?

所有的任務都是獨立的,你能想到我的腳本爲誰註冊,並要我安排任務爲他們的最終用戶的服務。所以如果5ppl註冊並且人A希望我在上午9點給他們發送電子郵件,這將與在下午10:30等待我詢問api的人B不同。

現在,在概念上我計劃建立一個數據庫,告訴我每個人的任務是什麼以及他們要求安排這個任務和頻率的時間。每天一次,我將從我的數據庫中獲取這些數據,以便我掌握當天需要執行的所有任務的最新記錄。

通過循環運行它我可以創建可執行定時器的通道或每個任務的代價。

我的問題是它如何被部署在生產中,例如谷歌應用程序引擎?因爲這些平臺是爲Web服務器,我不知道這將如何工作......或者我應該使用谷歌計算引擎,並有24小時的計算?谷歌計算引擎甚至可以進行http調用嗎?

另外,如果我必須有發言權每天走24個小時開放500個頻道,這是否算作500個集裝箱在谷歌應用程序引擎?我認爲,儘管本質上是一種非常低成本的產品,但其價格會很快上漲。

這樣問題又來了回來,請問cron腳本被部署在生產?

任何幫助或指導將不勝感激,因爲我已經做了很多谷歌上搜索,遺憾的是一切都導致回到那個有谷歌應用程序引擎100個任務限制一個cron調度......關於cron的

回答

1

詳細GAE上的操作可以找到here

從你的潛在棘手的部分是updating the cron配置完成從的應用程序,所以它至少是困難(如果不是不可能的話)來定製根據您的應用程序用戶的操作的cron作業。

然而可以只運行一個通用的cron作業(一分鐘一次,例如),並有工作的處理程序讀取用戶的自定義作業CONFIGS並進一步生成相應的任務來處理它們。每天運行〜10K任務通常不是問題,它們甚至可以適應免費應用程序配額(取決於實際執行的任務)。

同樣的技術可以在一個普通的Linux OS被應用的(包括在GCE VM)。我還沒有使用GCE,所以我無法確切地知道動態更新的cron是否可以使用它。

+0

爲什麼不是任務隊列? –

+1

@ZigMandel:是的,任務隊列就是我想象通用cron作業生成的任務會去的地方。使用延期任務也是可能的。 –

0

您只需要一個cron作業來滿足您的要求。此cron作業可以每30分鐘運行一次,或者每天運行一次。它會看到下一段時間需要完成什麼,創建任務來完成它,並將這些任務添加到隊列中。

它可以全部由一個App Engine實例完成。當然,執行任務所需的實例數量取決於每個任務運行的時間。您對運行任務隊列有很大的控制權。