我正在編寫一個使用rsync協議將文件從服務器傳輸到本地計算機的Python/Django應用程序。我們將處理大文件,因此進度欄是強制性的。 rsync
命令中的--progress
參數可以很好地執行此操作。所有的細節進展都顯示在終端中。如何顯示Web瀏覽器的進度?有沒有鉤子功能或類似的東西?或者我可以將進度存儲在日誌文件中,調用它並每隔一分鐘更新一次?如何使用DJango顯示網頁瀏覽器中的rsync --progress?
回答
的基本原理是在子運行rsync的,公開Web API並獲取即時更新通過JavaScript
下面是一個例子。
import subprocess
import re
import sys
print('Dry run:')
cmd = 'rsync -az --stats --dry-run ' + sys.argv[1] + ' ' + sys.argv[2]
proc = subprocess.Popen(cmd,
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,)
remainder = proc.communicate()[0]
mn = re.findall(r'Number of files: (\d+)', remainder)
total_files = int(mn[0])
print('Number of files: ' + str(total_files))
print('Real rsync:')
cmd = 'rsync -avz --progress ' + sys.argv[1] + ' ' + sys.argv[2]
proc = subprocess.Popen(cmd,
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,)
while True:
output = proc.stdout.readline()
if 'to-check' in output:
m = re.findall(r'to-check=(\d+)/(\d+)', output)
progress = (100 * (int(m[0][1]) - int(m[0][0])))/total_files
sys.stdout.write('\rDone: ' + str(progress) + '%')
sys.stdout.flush()
if int(m[0][0]) == 0:
break
print('\rFinished')
但是,這隻顯示我們在標準輸出(stdout
)中的進展。
我們可以但是,修改此代碼返回進步爲JSON輸出,並且可以通過我們創建一個progress webservice/API
可以提供這種輸出。
在客戶端使用,我們會寫javascript(ajax)來不時地聯繫我們的progress webservice/API
,並使用該信息更新客戶端的一些信息,例如,文本消息,圖像寬度,某些div的顏色等
謝謝你的回答。 Web服務/ API可用在哪裏? – sachitad
創建API與創建傳統視圖函數沒有區別。下面是一個例子 - http://nathanborror.com/posts/2008/aug/11/creating-basic-api-django/ 儘管你可能想使用「API框架」,比如django-tastypie。 –
- 1. 如何在瀏覽器中使用網頁瀏覽器控件?
- 2. 顯示網頁瀏覽器請求
- 3. 如何在網頁瀏覽器中顯示碧玉報告
- 4. 如何在BlackBerry瀏覽器字段中顯示網頁?
- 5. 如何讓網頁顯示其瀏覽的平臺和瀏覽器?
- 6. 顯示Safari瀏覽器瀏覽網頁在iPhone
- 7. 如何下載網頁源並在網頁瀏覽器中顯示?
- 8. 如何在JFrame Web瀏覽器視圖中顯示以顯示網頁?
- 9. 如何使網頁適合瀏覽器
- 10. 使用網頁瀏覽器打印文檔顯示
- 11. 如何使用asp.net瀏覽和顯示網頁瀏覽器中的Excel工作表?
- 12. css - 如何在手機瀏覽器上正確顯示網頁
- 13. Web瀏覽器控件未顯示Html,但顯示網頁
- 14. asp.net如何使IE瀏覽器無法顯示網頁錯誤頁面
- 15. 如何分頁瀏覽頁面顯示?
- 16. WP7網頁瀏覽器控件使用IE瀏覽器,如何使用不同的瀏覽器
- 17. Django的網址,瀏覽器
- 18. 網頁瀏覽器內的網頁瀏覽器
- 19. 網頁瀏覽器中的顯示下載對話框
- 20. 如何而HTML網頁的瀏覽器
- 21. 顯示多個網頁瀏覽
- 22. Django PDF:如何在瀏覽器中顯示進度?
- 23. 如何在瀏覽器中顯示pdf
- 24. 如何在瀏覽器中提供網址時將網頁上傳到網頁並顯示網頁?
- 25. 如何創建像Chrome瀏覽器等網頁瀏覽器
- 26. 如何網頁瀏覽器設置爲文本瀏覽器
- 27. WEC7網頁瀏覽器控件不顯示頁面
- 28. 如何使瀏覽器顯示更改爲靜態網站
- 29. 瀏覽器插件顯示網頁是從瀏覽器緩存還是網頁服務器加載
- 30. TinyMCE不會在IE8瀏覽器中顯示網頁內容
瀏覽器是通過rsync還是通過網絡瀏覽器與服務器通話?兩者同時? –