6

parse-server migration guide によると、Kue や Kue-UI などを使用 parse.com のスケジュールされたジョブ機能をエミュレートできます。

私は Kue や Kue-ui を実装していませんが、ガイドを見ると、既存の parse.com のスケジュールされたジョブと同じレベルの機能を提供しているようには見えません。この観察は正しいですか?誰かがこれを実装しましたか?ジョブは JavaScript で Kue を介してスケジュールする必要があり、Kue-ui はジョブの現在のステータスの概要のみを提供し、Kue-ui を介して新しいスケジュールを追加できないというのは本当ですか?

Jenkinsのようなもので同じ結果を達成しようとした人はいますか? だからこれは私が念頭に置いていたことです:

  • 各ジョブは引き続きクラウド コードで定義されます。 Parse.Cloud.job("job01", function(request, response) {));
  • /parse/jobs/job01 などの既存のクラウド機能と同様の URL でジョブを公開するように parse-server を少し変更します (これはすぐに parse-server に存在する可能性があります: github.com/ParsePlatform/parse-server/pull/2560)
  • 新しいジェンキンスジョブを作成し、そのURLでcurlを実行します
  • ジェンキンス Web UI 内からそのジェンキンス ジョブの cron のようなスケジュールを定義します。

利点は次のとおりです。

  • コーディングがほとんどまたはまったくない
  • jenkins のセットアップは、kue、redis、および kue-ui のセットアップよりもはるかに少ない作業のように思えます
  • 既存のクラウド ジョブ / 定義はまったく同じまま
  • jenkins Web UI を介してジョブをスケジュールし、手動でトリガーする

現在の parse.com スケジュール ジョブ/クラウド ジョブで実行でき、jenkins ベースのソリューションでは実行できない唯一のことは、ドロップダウン リストから新しいスケジュールを作成するジョブ名を選択できることです。

何か不足していますか?他のみんなはこれについてどうなっていますか?ありがとう。

4

4 に答える 4

1

kueはこの目的のために使用します。私は自分の記事でアプローチについて説明しました。要するに、この機能:

Parse.Cloud.job("sendReport", function(request, response) {
  Parse.Cloud.httpRequest({
  method: 'POST',
  headers: {
   'Content-Type': 'application/json',
  },
  url: "https://example.com/url/", // Webhook url
  body: "body goes here",
  success: function(httpResponse) {
      console.log("Successfully POSTed to the webhook");
      },
  error: function(httpResponse) {
      console.error("Couldn't POST to webhook: " + httpResponse);
      }
  });
});

これになります:

// Create a kue instance and a queue.
var kue = require('kue-scheduler');
var Queue = kue.createQueue();
var jobName = "sendReport";

// Create a job instance in the queue.
var job = Queue
            .createJob(jobName)
            // Priority can be 'low', 'normal', 'medium', 'high' and 'critical'
            .priority('normal')
            // We don't want to keep the job in memory after it's completed.
            .removeOnComplete(true);

// Schedule it to run every 60 minutes. Function every(interval, job) accepts interval in either a human-interval String format or a cron String format.
Queue.every('60 minutes', job);

// Processing a scheduled job.
Queue.process(jobName, sendReport);

// The body of job goes here.
function sendReport(job, done) { 
  Parse.Cloud.httpRequest({
  method: 'POST',
  headers: {
   'Content-Type': 'application/json',
  },
  url: "https://example.com/url/", // Webhook url
  body: "body goes here"}).then(function(httpResponse) {
    console.log("Successfully POSTed to the webhook");
    // Don't forget to run done() when job is done.
    done();
  }, function(httpResponse) {
    var errorMessage = "Couldn't POST to webhook: " + httpResponse;
    console.error(errorMessage);
    // Pass Error object to done() to mark this job as failed.
    done(new Error(errorMessage));
  });
}

kue-scheduler正常に動作しますが、イベントが必要以上に頻繁に発生することがあることに気付きました。詳細については、この問題を参照してください: https://github.com/lykmapipo/kue-scheduler/issues/45

于 2016-08-31T04:55:12.017 に答える
0

AWS を使用している場合、これはオプションになる可能性があります。

  1. 特定の間隔でトリガーされ、Lambda 関数を呼び出す AWS CloudWatch イベント ルールを作成します。イベント ルールは、パラメーターを Lambda 関数に渡すことができます。

  2. Cloud Code 関数 / ジョブを呼び出す単純な Lambda 関数を作成します。イベント ルールからクラウド コードの関数名とその他のパラメーターを受け取った場合、クラウド コードの呼び出しに必要な汎用 Lambda 関数は 1 つだけです。

イベント ルールは AWS インフラストラクチャの一部であり、他の AWS サービスと簡単に統合できるため、これにはいくつかの利点があります。たとえば、イベント ルール呼び出しのインテリジェント キューイングを設定して、前の呼び出しがまだ完了していない場合に、キュー内の次の呼び出しを破棄したり、別のキューにオーバーフローしたり、オペレーターに通知したりすることができます。

于 2020-04-23T16:35:46.100 に答える