2009-09-07 24 views
1

我正在構建一個應用程序,我需要設置cron作業。我想要做的是在特定的cron應該運行的一個小時內設置具體的分鐘數。例如:如何在google-app-engine(java)中設置複雜的自定義crontab?

  • 任務1在上一小時,每2分鐘只能在小時

建設這個下半年

  • 任務3的每兩分鐘一小時
  • 任務2的第一分鐘在標準的Unix cron格式中是相當簡單的,但不知道如何在Google-App-Engine中完成。

    documentation沒有列出任何非平凡的例子。有關如何做的建議?例子會很好。

  • 回答

    2

    鏈接到的文檔似乎表明,不可能只使用Cron for Java(除非它們具有未公開的功能)執行您想要的操作。特別是這似乎不允許多次。

    時間指定一天中的時間,如HH:MM在24小時內的時間。

    Python版本說完全一樣的東西。

    然而,一個解決方案(儘管在CPU使用率方面稍微昂貴一些)將是每分鐘調用一次URL,並從該URL的處理程序調度出您需要的任何其他調用。

    換句話說,是這樣的:

    <?xml version="1.0" encoding="UTF-8"?> 
    <cronentries> 
        <cron> 
        <url>/run-scheduled-tasks</url> 
        <description>Run all scheduled tasks</description> 
        <schedule>every 1 minutes</schedule> 
        </cron> 
    </cronentries> 
    

    然後在運行計劃任務,檢查數據庫的各個任務上次運行,如果因爲那麼你的觸發這些複雜的情況發生。

    +0

    是的,這就是我現在想要做的。我的一個cron是調用一個jsp頁面。 response.sendRedirect(jsp)會在這樣一個cron環境中工作嗎? cron環境會理解重定向並呼叫第二頁嗎? – Shreeni 2009-09-07 08:04:09

    +0

    爲什麼不只是執行適當的代碼,而不是重定向到它? – 2009-09-07 08:39:30

    +0

    那麼,我正在指揮cron來打一個servlet終點,並不確定如何做一個包含JSP頁面的服務器端。但是我總是可以將其逆轉 - 通過cron創建一個JSP,並在服務器端包含我想要做的所有事情 - servlet和JSP頁面。這似乎工作。 順便說一句,你知道如何做一個服務器端包括從一個servlet內的JSP? – Shreeni 2009-09-07 11:07:35

    0

    如果文檔是正確的,你不能得到你想要的粒度。看起來他們看起來不像他們支持選擇一小時中的某一分鐘。或者一小時的子集。

    您可能需要創意。你爲什麼需要這樣的具體時間?

    -1

    看看Quartz,看看是否能解決您的問題。

    +1

    Quartz如何使用Google-App-Engine?AFAIK,crons是由App-Engine發起的,對吧?那麼,Quart如何提供幫助? – Shreeni 2009-09-07 11:08:56

    +0

    Quartz是一個功能強大的庫,用於安排事情。這就是爲什麼我建議你不知道這件事。我不知道AppEngine的限制是否讓Quartz運行,因此我在原始響應中故意含糊不清。此外,使用Quartz,您無需點擊網頁即可觸發事件。 – 2009-09-09 22:04:28

    0

    這看起來很愚蠢。寫三個servlet。並從世界其他地方的另一臺UNIX機器安排它們:D。甚至你可以寫一個Java應用程序來做到這一點。享受

    相關問題