LoginSignup
0
0

More than 1 year has passed since last update.

easycronでcronジョブを動的に作成、実行する

Last updated at Posted at 2021-11-07

Next.jsいいよね

エンジニアのわくてかです。最近 Next.jsとfirestoreできもちよく開発しています。
一緒にサービス開発したい人募集してます :fire:
https://wktq.me/hackable

今まではユーザーに定期タスクを登録してもらい、タスクで指定した日時にcronジョブを走らせるという実装をしたく調べてみたら、Cron s a Serviceみたいなのが結構あるようで、easycronがジョブ登録APIもあり一番シンプルだったので使ってみました。
ほとんどNext.js関係ないです。タグは釣りです。すみません。

easycronに登録してアクセストークンを取得

↑からメールアドレスとパスワードを登録します(WEBからジョブ登録するだけなら登録しなくても使える)

easycon APIの叩き方

めちゃくちゃシンプルなAPIとなっており、methodを指定してメタデータをparamsで渡すだけです。アクセストークンもparamsに含めます。

https://www.easycron.com/rest/[method]?token=[token]&name=value

以下のようなmethodが用意されています。

  • list
  • add
  • detail
  • edit
  • enable
  • disable
  • delete
  • logs
  • log
  • timezone

jobを作成する

今回は新規のタスクを登録したいので、addのドキュメントを見てみます。
https://www.easycron.com/document/add

必須パラメータは、先ほど取得したトークン、叩くURL、cron表記の3つです。
対応しているcronの書き方は↓にまとまっています。
https://www.easycron.com/faq/What-cron-expression-does-easycron-support

タイムゾーンはデフォルトでeasycronに登録した際のユーザーのタイムゾーンを使うようになっています。

const data = {
    token: process.env.EASYCRON_TOKEN,
    url: "http://google.com",
    cron_expression: "00 14 * * 3", // 毎週水曜日の午後2時に実行
    // auth_user: 'hoge', // basic認証も対応
    // auth_password: 'password',
};

const param = {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
    },
    body: JSON.stringify(data),
};

const res = await fetch("https://www.easycron.com/rest/add", param);

成功したらcron_jobのidが帰ってきます。

{"status":"success","cron_job_id":"3291692"}

jobを削除する

完全な削除と、無効化・有効化があります。全て形式は同じです。

  • 完全に削除する場合
https://www.easycron.com/rest/delete?token=[token]&id=2107
  • disableする場合
https://www.easycron.com/rest/disable?token=[token]&id=2107
  • disableしたものを再度有効化したい場合
https://www.easycron.com/rest/enable?token=[token]&id=2107

おまけ

ユーザーにcron記法を教えるのは大変なので、cron用のinputがあります。Reactも対応してます。

価格

https://www.easycron.com/user/plan
個人利用だったら無料で使えます。
APIからジョブを登録する場合は年間契約が必要です。
$12 / 年のプランに登録すると、一日4,000ジョブまで、分ごとの日時指定ができます。

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0