1.0.5 • Published 4 years ago

nicejob-scheduler v1.0.5

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

nicejob-scheduler

The goal was to create an NPM module to provide a simple interface for scheduling HTTP requests on Google Cloud Tasks.

Overview

Scheduling message requests and social media shares is a major product feature of NiceJob. On the platform meanwhile we need to schedule token refreshes, time-intensive data calculations, and other miscellaneous actions.

Therefore we need a means of executing an event at a given time. To do that, we use Google Cloud Tasks.

GCP Cloud Tasks documentation

Installation

npm i nicejob-scheduler

Module initialization

Authorization

You have to set an enviroment variable 'GOOGLE_APPLICATION_CREDENTIALS' that equal to the path of your service account.

export GOOGLE_APPLICATION_CREDENTIALS="[PATH_TO_YOUR_CREDENTIALS_FILE]"

For more information on authorization visit Getting Started with Authentication

const Scheduler = require("nicejob-scheduler")

const scheduler = new Scheduler({
  project_id,
  queue_id,
})

Constructor options

PropertyTypeRequiredDescription
project_idStringGoogle Cloud Platform project ID
queue_idStringCloud Tasks queue ID

Creating a Task Queue

Task Queues can be created using the gcloud CLI:

$ gcloud tasks queues create $QUEUE_ID --project=$PROJECT_ID

Methods


schedule({ date, request })

Schedules a new Cloud Task.

const id = await scheduler.schedule({ date, request })

Parameters

ParameterTypeRequiredDescriptionDefault
dateDateTask execution timeImmediately
requestObject
request.urlStringRequest URL
request.methodStringRequest method"POST"
request.headersObjectRequest headers0
request.bodyObjectRequest body, if method is "POST", "PUT", or "PATCH"
  • 0 – The default Content-Type header should be application/json

Returns

An string returning the new Cloud Task ID from the Cloud Tasks client library. These names have the format:

projects/$PROJECT_ID/locations/$LOCATION_ID/queues/$QUEUE_ID/tasks/$TASK_ID

Example usage

/**
 * Schedule an HTTP request
 */
const date = new Date("2020-01-01T12:00:00")
const request = {
  url: "https://api.nicejob.co/v2/process",
  headers: {
    Authorization: "Bearer faketoken",
  },
  body: {
    id: 123,
    metadata: { foo: "bar" },
  },
}

const task_id = await scheduler.schedule({ date, request })

delete(task_id)

Removes an existing Cloud Task from its Queue.

await scheduler.delete(task_id)

Parameters

ParameterTypeRequiredDescription
task_idStringCloud Task ID

Example usage

/**
 * Unschedule a task
 */
const task_id =
  "projects/MyProject/locations/ThatLocation/queues/ThisTask/tasks/123456789"
await scheduler.delete(id)
1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago