Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting a timer in Node.js

Tags:

I need to run code in Node.js every 24 hours. I came across a function called setTimeout. Below is my code snippet

var et = require('elementtree'); var XML = et.XML; var ElementTree = et.ElementTree; var element = et.Element; var subElement = et.SubElement; var data='<?xml version="1.0"?><entries><entry><TenantId>12345</TenantId><ServiceName>MaaS</ServiceName><ResourceID>enAAAA</ResourceID><UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID><EventType>create</EventType><category term="monitoring.entity.create"/><DataCenter>global</DataCenter><Region>global</Region><StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime><ResourceName>entity</ResourceName></entry><entry><TenantId>44445</TenantId><ServiceName>MaaS</ServiceName><ResourceID>enAAAA</ResourceID><UsageID>550e8400-e29b-41d4-a716-fffffffff000</UsageID><EventType>update</EventType><category term="monitoring.entity.update"/><DataCenter>global</DataCenter><Region>global</Region><StartTime>Sun Apr 29 2012 16:40:32 GMT-0700 (PDT)</StartTime><ResourceName>entity</ResourceName></entry></entries>' etree = et.parse(data); var t = process.hrtime(); // [ 1800216, 927643717 ]  setTimeout(function () {   t = process.hrtime(t);   // [ 1, 6962306 ]   console.log(etree.findall('./entry/TenantId').length); // 2   console.log('benchmark took %d seconds and %d nanoseconds', t[0], t[1]);   //benchmark took 1 seconds and 6962306 nanoseconds },1000); 

I want to run the above code once per hour and parse the data. For my reference I had used one second as the timer value. Any idea how to proceed will be much helpful.

like image 523
Amanda G Avatar asked Feb 14 '13 05:02

Amanda G


1 Answers

There are basically three ways to go

  1. setInterval()

The setTimeout(f, n) function waits n milliseconds and calls function f. The setInterval(f, n) function calls f every n milliseconds.

setInterval(function(){   console.log('test'); }, 60 * 60 * 1000);       

This prints test every hour. You could just throw your code (except the require statements) into a setInterval(). However, that seems kind of ugly to me. I'd rather go with:

  1. Scheduled Tasks Most operating systems have a way of sheduling tasks. On Windows this is called "Scheduled Tasks" on Linux look for cron.

  2. Use a libary As I realized while answering, one could even see this as a duplicate of that question.

like image 158
Marc Fischer Avatar answered Oct 01 '22 15:10

Marc Fischer