Rsync protokolünü kullanarak dosyaları sunucudan yerel makineye aktaran bir Python/Django uygulaması yazıyorum. Büyük dosyalar ile ilgileneceğiz, böylece ilerleme çubuğu zorunludur. --progress
argümanında rsync
komutu bunu güzelce yapar. Tüm detay ilerlemeler terminalde gösterilir. Web tarayıcısında bu ilerlemeyi nasıl gösterebilirim? Herhangi bir kanca işlevi veya böyle bir şey var mı? Veya ilerlemeyi bir günlük dosyasına kaydedebilir, arayabilir ve her dakikada bir güncelleyebilir miyim?DJango kullanarak web tarayıcısında rsync --progress nasıl gösteriliyor?
cevap
temel prensibi alt süreç olarak çalıştırmak rsync etmek, bir web API teşhir ve
İşte bir örnek javascript aracılığıyla güncelleme olsun.
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')
Ama bu sadece bizim standart çıkışa (stdout
) ilerleme gösterir.
Ancak, JSON çıktı olarak ilerlemeyi dönmek için bu kodu değiştirebilir ve bu çıkış yarattığımız bir progress webservice/API
yoluyla ulaşılabilir hale getirilebilir.
İstemci tarafında kullanım için, zaman zaman progress webservice/API
numaralı telefon numaramızla iletişim kurmak için javascript (ajax) yazacağız ve bu bilgileri kullanarak istemci tarafında bir şey güncelleme yapacağız. bir metin msg, bir görüntünün genişliği, bazı boşlukların rengi vb.
Cevabınız için teşekkür ederiz. Web hizmeti/API nerede kullanılabilir? – sachitad
Bir API oluşturmak, geleneksel bir görünüm işlevi oluşturmaktan farklı değildir. http://nathanborror.com/posts/2008/aug/11/creating-basic-api-django/ Gerçi bu tür django-tastypie gibi bir "API Framework" kullanmak isteyebilirsiniz - İşte bir örnek. –
- 1. Silverlight web tarayıcısında nasıl çalışır?
- 2. RStudio web tarayıcısında dokümanları açar
- 3. Web tarayıcısını web tarayıcısında nasıl açabilirsiniz masaüstü messenger
- 4. AWS Kinesis'i bir web tarayıcısında nasıl kullanabiliriz?
- 5. Katıştırılmış bir web tarayıcısında window.print() nasıl desteklenir?
- 6. Web tarayıcısında başlatılan JavaScript'ten JavaScript değişkenine geçiş
- 7. Web tarayıcısında Python'da URL'leri programatik olarak açma
- 8. heroku web tarayıcısında - sabit bellek büyür
- 9. Dağıtıcı olmadan WPF web tarayıcısında Javascript'i çağırın
- 10. LinkLabel ... varsayılan web tarayıcısında açılsın mı?
- 11. Neden gulp-rsync konuşmuyor?
- 12. Bir Progress View
- 13. Faking progress bar
- 14. rsync rsync üzerinde bir sağlama toplamı nasıl yapılır
- 15. Bu grafik nedir? Bir web tarayıcısında nasıl yeniden üretebilirim?
- 16. Bir web tarayıcısında asm.js'nin kullanılabilirliğini nasıl test edebilirim?
- 17. Devam etmekte zorlanıyorsanız Progress
- 18. requirejs script'i çalıştırıyor progress
- 19. önle rsync
- 20. rsync, değişmeyen dosyaların zaman damgalarını nasıl korur?
- 21. Unix metin tarayıcısında html etiketlerini nasıl görebilirim?
- 22. AFNetworking 2.0 içinde Progress parametresi nasıl kullanılır
- 23. JQuery'yi kullanarak Android tarayıcısında 'Yapıştır' nasıl devre dışı bırakılır?
- 24. Python ile bir web tarayıcısında otomatik olarak bir düğmeyi tıklatma
- 25. Android için Rsync oluşturun
- 26. Web siteleri tam HTML kodu gösteriliyor
- 27. Github'da Python Django Web Uygulaması nasıl oluşturulur?
- 28. Rsync kullanma ve
- 29. nasıl Google Chrome tarayıcısında tirelemeyi kullanabilir?
- 30. EJB 3.1 REST Web Hizmeti olarak nasıl gösteriliyor?
Tarayıcı rsync veya bir web tarayıcısı üzerinden sunucuyla mı konuşuyor? ikisi de aynı anda mı? –