2016-07-25 80 views
0

我想設置一個cron作業,將只通過應用引擎用戶界面觸發(按下按鈕上的應用程序引擎)我可以創建一個cron作業,沒有調度

我怎麼可以設置的cron與運行.xml包含沒有調度?

<?xml version="1.0" encoding="UTF-8"?> 
<cronentries> 
    <cron> 
     <url>/match</url> 
     <description>find buddies to all users</description> 
     <schedule>----?-----</schedule> 
    </cron> 
</cronentries> 

回答

0

AFAIK這是不可能的。

我看到2個可能的替代方案,基於GUI控制標記,表示如果「cron的」作業的時間,或不:

  • 有規律的cron只是檢查是否設置了標誌:DO工作立即如果它,如果它被設置並退出不

,或者

  • 使用the deferred library:設置標誌時還會引發延期任務,其中,在除了執行作業外,只要標誌被設置,它也會自動觸發自己;延遲的庫也允許以秒爲間隔重複執行任務,這對於普通的cron來說是不可能的(如果您感興趣的話)。

更新:

延遲庫至少有一個缺點:不能訪問延遲函數內部的請求處理程序。但延期功能也可在Task Queues(由@ jirungaray的答覆中提到) - 使用可選countdowneta參數taskqueue.add()

  • 倒計時 - 時間,以秒爲將來,這個任務應該運行或租用。默認爲零。如果 指定了eta,則不要指定此參數。

  • eta - A datetime.datetime它指定任務應該運行的絕對最早時間。如果指定了倒數參數 ,則不能指定此參數。該參數可以是時間 區域感知或時區初始,或設置爲過去的時間。如果參數 設置爲無,則默認值是現在。對於拉取任務,工作人員不能在eta 參數所指示的時間之前租用任務。

這使得最好延遲的庫任務隊列。

+0

我需要它的情況下,當我想停止(凍結)cron很長一段時間。說這是一個調試應用程序,我想停止cron。 –

-1

一個cron作業只是在給定的時間調用你的處理程序。如果你不想調度,只需在瀏覽器窗口,然後按回車,例如:

https://my-app.appspot.com/generate_report 

結果輸入您的處理程序是一樣的,在控制檯按下「立即運行」按鈕。

如果您願意,您還可以使用您的代碼在執行代碼之前檢查的某個標記來保護此處理程序。

+0

我需要它的情況下,當我想停止(凍結)cron很長一段時間。說這是一個調試應用程序,我想停止cron。 –

+0

Cron作業運行幾毫秒。你正在談論一個cron作業開始的任務,但這完全不同。已經有一種工具可以停止通過控制檯在隊列中運行的任務。 –

+0

請注意,您也可以暫停隊列。所以你可以把你的任務放到一個單獨的隊列中,然後根據需要暫停/重啓它。 –

1

看起來你真正需要的是Task Queues,這些任務是設計用於在主請求線程之外處理的任務。他們在後臺實例上工作,因此它們被分配與cron執行相同的限制(10分鐘限制等)。

調試PaaS總是很麻煩,Google整合了Stackdriver debugger,但我並不清楚你要完成什麼。