在Python中查看和可靠上传文件的最佳实践?
我正在用Python2.7为Windows构建一个桌面应用程序。此应用程序的主要功能是监视文件夹中的新文件。每当此文件夹中出现新文件时,应用程序就会将其上载到远程服务器。远程服务器上的进程为文件创建一个db记录,并将远程文件路径存储在该记录中 目前我正在使用它来监视目录和文件上传在Python中查看和可靠上传文件的最佳实践?,python,file-upload,python-watchdog,Python,File Upload,Python Watchdog,我正在用Python2.7为Windows构建一个桌面应用程序。此应用程序的主要功能是监视文件夹中的新文件。每当此文件夹中出现新文件时,应用程序就会将其上载到远程服务器。远程服务器上的进程为文件创建一个db记录,并将远程文件路径存储在该记录中 目前我正在使用它来监视目录和文件上传 我应该采取什么方法来确保新文件能够可靠地上载,而不管网络状况或internet连接是否丢失 更新:我所说的可靠上传是指即使应用程序重新启动,应用程序也会上传文件。像Dropbox。有些文件相当大(>100MB),因此简
try/catch
中,然后开始全面上传,效率不高。我知道Dropbox使用librsync,但在这种情况下,它可能有点过头了您可以维护文件名、时间戳和有关其上载状态的信息的文件或数据库。根据这些数据,您将知道已经发送了哪些文件,以及在应用程序或计算机重新启动后要上载哪些文件
检查时间戳会告诉您文件已被修改,上载过程应该重新开始。对于您的第一个问题,我认为您可以捕获任何异常并重试;在
语句中使用try except
语句,而在语句中使用True
@ZeinabAbbasi,我想我有点误解了我的观点。我所说的“可靠”的意思不仅仅是在中重试,而在真正的循环中重试。我需要应用程序上传这些文件,即使程序重新启动。即使电脑重新启动。我相信Dropbox一定能做到。我不知道这里的最佳实践是什么,但我认为这是一种保持文件队列以供上传的方式,或者在每次失败后使用librsync
反复跳过重新上传同一文件(文件可能很大)。我会更新问题的。好主意!我认为Dropbox就是这么做的:将文件列表保存在数据库中。在多任务方面,您将如何构建此应用程序?现在我在一个进程中完成所有工作(或者使用watchdog
)的线程)。@Warwick您肯定应该使用线程池来控制同步上传。我会做类似于1的事情。将有关文件上载请求的数据添加到数据库2。将这些请求添加到线程池3。在任何一次上载成功时,更新相应的数据库第4行。在任何一次上传失败时,再次向线程池添加上传请求5。我将有另一个线程定期检查数据库未成功请求,并再次将它们添加到线程池中。发布另一个问题:)