【发布时间】:2014-04-18 17:07:58
【问题描述】:
我正在用 Python 2.7 为 Windows 构建一个桌面应用程序。此应用程序的主要功能是监视文件夹中的新文件。每当此文件夹中出现新文件时,应用程序就会将其上传到远程服务器。远程服务器上的进程为该文件创建一个 db 记录,并将远程文件路径存储在该记录中。
目前我使用watchdog 监控目录并使用httplib 进行文件上传。
-
我应该采取什么方法来确保无论网络状况或 Internet 连接中断如何都能可靠地上传新文件?
更新:我所说的可靠上传是指即使应用重新启动,应用也会上传文件。像 Dropbox。有些文件非常大(> 100 MB),因此简单的解决方案(例如将代码包装在
try / catch中并重新开始上传)效率不高。我知道 Dropbox 使用 librsync,但在这种情况下可能有点矫枉过正。 如果源文件在上传过程中被更改了怎么办?我应该停止上传并重新开始吗?
【问题讨论】:
-
对于您的第一个问题,我认为您可以捕获任何异常并重试;在
while True中使用try except语句。 -
@ZeinabAbbasi 我想我有点错过了我的观点。我所说的“可靠”的意思不仅仅是在
while True循环中重试。即使程序重新启动,我也需要该应用程序来上传这些文件。即使PC重新启动。我确信 Dropbox 会以某种方式做到这一点。我不知道这里的最佳实践是什么,但我认为这是某种保留要上传的文件队列或在每次失败后一遍又一遍地跳过重新上传相同文件后使用librsync(文件可能很大)。我会更新问题。
标签: python file-upload python-watchdog