测试是否发生了同步(Python)

2024-07-03 06:50:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有swf的,需要在服务器上同步,我没有访问。我不知道服务器上什么时候发生了这种情况(有一个cron作业应该每15分钟运行一次,但是它可以工作。。。断断续续地),所以我唯一的选择似乎是猜测和检查(等待15分钟。。。更新了吗?等15分钟。更令人烦恼的是,有时需要5分钟来查看版本是否已更新或是否有旧版本。总而言之,这一周要浪费几个小时,如果不是更多的话。你知道吗

我正在寻找Python的一种方法,让我知道本地文件和服务器上的文件是同一个文件。你知道吗

我(完全未经测试)的计划:

def ensureSynced(url,localfile,finaldest = None):
    urllib.request.urlretrieve(url,<download-file>)
    downloaded = '\n'.join(file(<download-file>).readlines())
    local      = '\n'.join(file(localfile).readlines())
    if finaldest is None: finaldest  = url
    if downloaded == local: # I believe this will work?
        webbrowser.open(finaldest)
    else
        time.sleep(90)
        ensureSynced(url,localfile,finaldest)

但是,我忍不住想,一定有更好的办法。你知道吗

真正的问题

如果没有FTP可用性,有没有办法让Python轻松地检查远程服务器上的资源是否与本地资源相同?或者有没有更好的方法来完成上面的代码?你知道吗

旁注

不,我无权修理它。我试图得到它,这样服务器就可以在HTML中的某个地方输出“同步时间”——甚至在一条评论中——但我的请求基本上落在了“这不是优先事项”的耳朵上。你知道吗


Tags: 文件方法服务器noneurlifdownloadlocal
1条回答
网友
1楼 · 发布于 2024-07-03 06:50:17

我建议检查目标服务器是否支持HEAD请求,以及是否设置了etag头和last-modified头。你知道吗

如果是这种情况,您可以(甚至每x秒)执行一个head请求,并将etag与本地文件的md5sum进行比较,如果上次修改的时间正确,那么您就可以看到文件同步的时间。你知道吗

要发送HEAD请求,请参见示例How do you send a HEAD HTTP request in Python 2?

相关问题 更多 >