【问题标题】:Schedule scraping job - Meteor JS安排抓取作业 - Meteor JS
【发布时间】:2015-12-30 03:05:54
【问题描述】:

我需要在太平洋标准时间上午 12 点从某些网站抓取数据,并将抓取的数据显示在我的网站上。我应该如何实现这个?它将是服务器端还是客户端?我应该使用meteor-synced-cron吗?

我在想我会在没有meteor-synced-cron 的情况下这样做,而是在client/ 中进行,如果时间是上午 12 点,我会一劳永逸地更新我的收藏。这是正确的方法吗?

【问题讨论】:

    标签: javascript jquery meteor cron


    【解决方案1】:

    使用服务器的synced-cron,你会更快更快乐。如果您从客户端执行此操作,那么您必须 (a) 确保至少有一个客户端在午夜启动并运行,并且 (b) 确保它是具有适当权限的正确客户端,而不是所有客户端都在抓取所有内容。

    OTOH,如果您想将工作分配给多个客户并让他们都合作,那么这是一个完全不同的提议。

    /server 中的任意位置添加:

    SyncedCron.add({
      name: 'Daily Scraper',
      schedule: function(parser) {
        return parser.text('every 1 day'); // parser is a later.parse object.
      },
      job: function() {
        ... your scraping code here
      }
    });
    

    有关如何创建计划的详细信息,请参阅Later.js

    【讨论】:

    • 有道理!我如何在服务器端做到这一点?我是在 Meteor.startup() 函数中添加一个 synced-cron 还是什么?
    • 完美,谢谢!澄清一下,这不需要我每天都进行“流星重置”,对吧?
    • 绝对不是。我的应用程序有许多删除旧数据的同步 cron 作业,如果您正在网络抓取并且想要清除过时的数据,您可能需要类似的东西。否则你为什么需要重置?
    • 另外,如果我将这个包含在 server/ 目录下的一个名为 scrape.js 的文件中,它会自动执行服务器中的脚本吗?
    • 谢谢!一般来说,Meteor 会以什么顺序执行 server/ 目录中的脚本?我假设 server/ 中的任何 .js 文件都在某个时间点执行。对吗?
    猜你喜欢
    • 2017-10-28
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    相关资源
    最近更新 更多