ノードのcronジョブのスケジューリング.js
13877 ワード
ノードのcron仕事.一定の間隔で何度も何度もサーバー上でスクリプトを実行する必要があるときはいつでも、JSは便利になります.これは、任意の特定の時間または日にユーザーにメールを送信などの任意のタスクをすることができます.この記事では、nodemailerの助けを借りてテストします.
まず、次のコマンドを使用してノードアプリケーションを作成します.
mkdir cron-jobs
npm init -y
さて、NPMからNode CronとNodeDailerパッケージをインストールする必要があります.indexというファイルを作成します.アプリケーションのエントリポイントとしてのJSまたは単に、我々のサーバーファイル.npm install node-cron
npm install nodemailer
touch index.js
//index.js
const express = require("express")
const cron = require("node-cron")
const nodemailer = require("nodemailer")
const app = express()
app.listen(8000)
cronジョブを設定する前に、まずnodeailerを設定しましょう.let transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: "[email protected]",
pass: "password"
}
})
let mailOptions = {
from: "[email protected]",
to: "[email protected]",
subject: "Nodemailer",
text: "Testing Nodemailer",
html: "<h1>Testing Nodemailer</h1>"
}
transporter.sendMail(mailOptions, (err, info) => {
if(err) {
console.log("error occurred", err)
} else {
console.log("email sent", info)
}
})
トランスポーターは、我々が使用している電子メールサービス、送信者の電子メールとパスワードを持つAuthオブジェクトを保持するオブジェクトです.
mailOptions標準の電子メール情報が含まれます.また、EJSやHBSなどのテンプレートを使用することもできます.
sendmailメソッドはメールオプションとコールバックを受け取ります.
It's important to note that we're using gmail as the service. In order to use it, we will have to turn on the less secure app feature.
cronのスケジュール方法は次のようになります.
┌──────────────── second (optional)
| ┌────────────── minute
| | ┌──────────── hour
| | | ┌────────── day of month
| | | | ┌──────── month
| | | | | ┌────── day of week
| | | | | |
| | | | | |
* * * * * *
//For a cron job to run every second
cron.schedule("* * * * * *", () => {
//code to be executed
})
//This will run every 10 seconds
cron.schedule("*/10 * * * * *", () => {
//code to be executed
})
//This will run at the start of every minute
cron.schedule("0 * * * * *", () => {
//code to be executed
})
//This will run at the start of every hour
cron.schedule("0 * * * *", () => {
//code to be executed
})
// This will run on 20th of every month at 02:00 hours
cron.schedule("* 02 20 * *", () => {
//code to be executed
})
nodemailerでcronジョブを設定する
最終的なコードは次のようになります.
const express = require("express")
const cron = require("node-cron")
const nodemailer = require("nodemailer")
const app = express()
let transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: "[email protected]",
pass: "password"
}
})
// Here, we're scheduling a cron job and it will send an email at the start of every minute.
// Info contains the mail content.
// In case of sending mail to multiple users, we can add multiple recipients.
cron.schedule("* * * * *", () => {
console.log("sending email")
let mailOptions = {
from: "[email protected]",
to: "[email protected]",
subject: "Nodemailer",
text: "Testing Nodemailer",
html: "<h1>Testing Nodemailer</h1>"
}
transporter.sendMail(mailOptions, (err, info) => {
if (err) {
console.log("error occurred", err)
} else {
console.log("email sent", info)
}
})
})
app.listen(8000)
最後に、あなたの端末に頭をし、サーバーを起動します.node index.js
この記事を読んでくれてありがとう.詳細については、私に従ってください.Reference
この問題について(ノードのcronジョブのスケジューリング.js), 我々は、より多くの情報をここで見つけました https://dev.to/akhildhiman/scheduling-cron-jobs-in-node-js-15fテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol