如何轮询资源URL进行文件更改

时间:2019-02-22 20:55:14

标签: curl

我有一个位于URL的文件,例如 https://www.example.com/file.csv

我需要在每次更新时(或至少每24小时一次)下载文件,并通过脚本对该文件执行某些操作。

但是,无论何时将文件重新上传到服务器上,我都没有任何通知服务/ webhook来通知我(我什至表示支持,但无法获得所需的东西)。

我如何轮询链接以进行更改?,以便每次文件更新时,我的脚本都会触发下载并继续执行任务?

我认为curl可以为我提供帮助,但是我对此一无所知,有些Google搜索没有给我所需的结果。

1 个答案:

答案 0 :(得分:6)

卷曲可以帮助您!

使用curl进行此操作的最简单方法是像每12个小时左右(最好使用crontab或类似方法)那样简单地自动调用它。然后,如果远程文件比本地文件新,请要求curl仅获取文件

// assign this to const that,
// so it can be used for binding
const that = this;
this.loader.load(model, function(object) {

  ...

  // this.animate
  const callbackWithThisBinding = callback.bind(that);
  callbackWithThisBinding();
}

如果要在crontab中进行操作,则可能会添加类似于以下内容的行:

class Customer(models.Model):
customer_bank        = models.ForeignKey('Bank', on_delete=models.SET_NULL,related_name='coustmer_bank' ,null=True)
customer_branch      = models.ForeignKey('Branch', on_delete=models.SET_NULL,related_name='coustmer_branch',null=True)
booking_id           = models.CharField(max_length=120, blank= True,default=increment_booking_number)
identity_type        = models.ForeignKey('IdentityType',on_delete=models.SET_NULL,related_name='identity_type',null=True)
identity_or_passport_number   = models.CharField(max_length=20)
bank_account_no      = models.CharField(max_length=15)
Done                 = models.BooleanField(default=False)
booking_date_time    = models.DateTimeField(auto_now_add=True, auto_now=False)
Entrance_date_time   = models.DateTimeField(auto_now_add=False, auto_now=True)# Must be modified to work with Entrance Date and Time

def __str__(self):
    return self.booking_id

...,如果文件在服务器上比磁盘上新,则curl会每12小时相应地在专用下载目录中更新文件。

它如何工作?

documentation for curl -z所述:

  

日期表达式(传递给-z)可以是各种日期字符串,或者如果与任何内部字符串都不匹配,则将其作为文件名并尝试获取修改日期(mtime)来代替文件。