我有一个位于URL的文件,例如 https://www.example.com/file.csv
我需要在每次更新时(或至少每24小时一次)下载文件,并通过脚本对该文件执行某些操作。
但是,无论何时将文件重新上传到服务器上,我都没有任何通知服务/ webhook来通知我(我什至表示支持,但无法获得所需的东西)。
我如何轮询链接以进行更改?,以便每次文件更新时,我的脚本都会触发下载并继续执行任务?
我认为curl
可以为我提供帮助,但是我对此一无所知,有些Google搜索没有给我所需的结果。
答案 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小时相应地在专用下载目录中更新文件。
日期表达式(传递给-z)可以是各种日期字符串,或者如果与任何内部字符串都不匹配,则将其作为文件名并尝试获取修改日期(mtime)来代替文件。