Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中查看和可靠上传文件的最佳实践?_Python_File Upload_Python Watchdog - Fatal编程技术网

在Python中查看和可靠上传文件的最佳实践?

在Python中查看和可靠上传文件的最佳实践?,python,file-upload,python-watchdog,Python,File Upload,Python Watchdog,我正在用Python2.7为Windows构建一个桌面应用程序。此应用程序的主要功能是监视文件夹中的新文件。每当此文件夹中出现新文件时,应用程序就会将其上载到远程服务器。远程服务器上的进程为文件创建一个db记录,并将远程文件路径存储在该记录中 目前我正在使用它来监视目录和文件上传 我应该采取什么方法来确保新文件能够可靠地上载,而不管网络状况或internet连接是否丢失 更新:我所说的可靠上传是指即使应用程序重新启动,应用程序也会上传文件。像Dropbox。有些文件相当大(>100MB),因此简

我正在用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。我将有另一个线程定期检查数据库未成功请求,并再次将它们添加到线程池中。发布另一个问题:)