Parse.comでcronのような定期タスクを実行する
そもそもparse.comでcron / periodic taskは設定できるのか?
可能。
Cloud CodeのBackground Jobsを見るべし。
- バックグラウンドジョブは15分で強制終了される
- 秒間20タスクまで
- 秒間20タスクの制限を超える状態でタスクが起動すると、直ちに終了される
- cronのような定期タスクはダッシュボード設定可能
タスクの定義
Parse.Cloud.job()
でジョブを定義できる。periodicHello
というタスクを定義して、hello
関数を呼び出す。なお、 タスク終了時は必ずstatus.success()
またはstatus.error()
を呼び出す必要がある。
// hello()の定義
Parse.Cloud.define("hello", function(request, response) {
response.success("Hello world!");
});
// ジョブの定義
Parse.Cloud.job("periodicHello", function(request, status) {
Parse.Cloud.run('hello', {}, {
success: function(result) {
// タスクランナーにsuccess()を返す
status.success('success!');
},
error: function(error) {
// タスクランナーにerror()を返す
status.error('error :-(');
}
});
});
定期タスクの設定
Core
タブのサイドメニューからJobs
を選択してSchedule a job
を開く。
description
に適当な名前を入力し、Job Name
のプルダウンに定義済みのジョブが登録されているので選択する。Repeat
で定期的に実行する時間を設定する。
設定するとジョブリストに追加される。Run Now
をクリックすると即座に実行される。
実行結果はJob Status
かLogs
で見ることが出来る。
トラブルシュート
タスク内からCloud Functionが呼び出せない
タスク内からCloud Functionを呼び出すことは出来ないみたい?
Cloud Function自体が非同期で動作するため、Cloud Functionの実行開始後にタスクが終了してしまいロジックが実行されないようだ。不便だけどタスクの中にすべての処理を追加する必要がありそう。
タスク内で実行したオブジェクト検索が実行されない
次のようにタスクの最後でreturnしてしまうとクエリは実行されない。
Parse.Cloud.job('job', function(request, status) {
var Bike = Parse.Object.extend('Bike');
var query = new Parse.Query(Bike);
query.equalTo('broken', false);
query.find({
success: function(results) {
// ここが実行されない
}
});
return status.success('success');
});
クエリ実行後にreturnする。
Parse.Cloud.job('job', function(request, status) {
var Bike = Parse.Object.extend('Bike');
var query = new Parse.Query(Bike);
query.equalTo('broken', false);
query.find({
success: function(results) {
return status.success('success');
}
});
});
所感
JavaScriptで記述することになるが実行形態としては比較的容易な部類に入ると感じる。実行時の制限も少ない。1タスクで15分以上かかるような処理はそう多くないだろうし、並列処理できるのが20個までなのでこの点だけ注意。
Author And Source
この問題について(Parse.comでcronのような定期タスクを実行する), 我々は、より多くの情報をここで見つけました https://qiita.com/key/items/3043a04b8adaf8311a31著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .