【问题标题】:Cron jobs in MeteorMeteor 的 Cron 职位
【发布时间】:2018-09-21 16:48:01
【问题描述】:

我想知道是否可以在提供的任何特定时间删除或修改 mongodb 集合中的数据。

将其视为必须在一天结束时删除/更新的琐碎数据。 给我指个方向。

【问题讨论】:

标签: javascript node.js mongodb meteor


【解决方案1】:

在 Meteor 中执行 cron 任务有两个不错的选择:

根据我的经验,如果您的用例很简单,并且您需要一个快速、轻量级的解决方案,meteor-synced-cron 应该没问题。如果您的任务更复杂,您需要对工作进行更多控制,然后使用jobs-collection

【讨论】:

  • 感谢 meteor-synced-cron 为我做的帮助。
  • 2020 年更新:不再维护这两个软件包
【解决方案2】:

标准的 npm cron 工作正常。例如。

import { CronJob } from 'cron';

Meteor.startup(() => {
  new CronJob({
    cronTime: '00 30 02 * * *',
    // use this wrapper if you want to work with mongo:
    onTick: Meteor.bindEnvironment(() => {
      // stuff happens
    })
    start: true,
    timeZone: 'America/Los_Angeles',
  });
});

【讨论】:

    【解决方案3】:

    在使用流星时,我没有得到像 cron 这样的标准节点包作为流星投诉正常工作并显示使用 Fibers 的消息。对于一个简单的日常任务,我创建了一个直接使用 Meteor.setTimeout() 的函数。这样,它将保持 Meteor 环境可用,以便您每天进行数据库清理。

    它稍后会使用节点包来安排何时触发“cron”作业。您可以将 yourDailyCleanup 替换为要调用的函数的名称。

        import { Meteor } from 'meteor/meteor';
        import later from 'later';
    
        function scheduleTimeout(sched, fn) {
          const nowMilli = Date.now();
          const next = later.schedule(sched).next(1,nowMilli+1001);
          console.log('next schedule',next);
          const diffMile = next.getTime() - nowMilli;
    
          Meteor.setTimeout( function() {
            scheduleTimeout(sched,fn);
            fn();
          } , diffMile );
        }   
    
        Meteor.startup(function() {
          console.log('Startup');
          later.date.localTime();
    //      scheduleTimeout( later.parse.recur().every(2).minute(), function() { console.log('test job');} );
          scheduleTimeout( later.parse.recur().on('23:00:00').time(), yourDailyCleanup );
        });
    

    代码基于包percolatestudio:meteor-synced-cron,您也可以在需要更多功能时使用。

    【讨论】:

      猜你喜欢
      • 2012-11-24
      • 2013-10-24
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      相关资源
      最近更新 更多