2017-06-06 137 views
1

我正在尋找從python腳本獲取輸出到我的django web服務器。
我會在我的腳本中使用pySmartDL,所以即使當Django關閉時,我也需要它運行,並且django在啓動時需要從正在運行的腳本中獲取數據。從python腳本獲取輸出到django

pySmartDL爲例腳本:

import time 
from pySmartDL import SmartDL 

url_100mb_file = ['http://ipv4.download.thinkbroadband.com/100MB.zip'] 
obj = SmartDL(url_100mb_file, progress_bar=False) 
obj.start(blocking=False) 

while not obj.isFinished(): 
     print("Speed: %s" % obj.get_speed(human=True)) 
     print("Already downloaded: %s" % obj.get_dl_size(human=True)) 
     print("Eta: %s" % obj.get_eta(human=True)) 
     print("Progress: %d%%" % (obj.get_progress()*100)) 
     print("Progress bar: %s" % obj.get_progress_bar()) 
     print("Status: %s" % obj.get_status()) 
     print("\n"*2+"="*50+"\n"*2) 
     time.sleep(0.2) 

if obj.isSuccessful(): 
     print("downloaded file to '%s'" % obj.get_dest()) 
     print("download task took %ss" % obj.get_dl_time(human=True)) 
     print("File hashes:") 
     print(" * MD5: %s" % obj.get_data_hash('md5')) 
     print(" * SHA1: %s" % obj.get_data_hash('sha1')) 
     print(" * SHA256: %s" % obj.get_data_hash('sha256')) 
else: 
     print("There were some errors:") 
     for e in obj.get_errors(): 
       print(str(e)) 

# Do something with obj.get_dest() 

正如你可以在這裏看到的腳本將打印輸出幾倍的同時,文件與此下載:

time.sleep(0.2) 

,所以我需要得到動態輸出。
我發現了一些與websocket(使用redis和django-channels或django-redis)和nodeJS的答案,但我找不到將腳本輸出發送到redis服務器以及如何從django獲取它們的代碼示例。我對nodeJS瞭解不多。

謝謝你的時間!

回答

0

通過涉及node.js和django渠道不要複雜的事情。這是你可以用redis做的事情。

rdb = redis.Redis() 

while not obj.isFinished(): 
    print("Speed: %s" % obj.get_speed(human=True)) 
    print("Already downloaded: %s" % obj.get_dl_size(human=True)) 
    print("Eta: %s" % obj.get_eta(human=True)) 
    print("Progress: %d%%" % (obj.get_progress()*100)) 
    print("Progress bar: %s" % obj.get_progress_bar()) 
    print("Status: %s" % obj.get_status()) 
    print("\n"*2+"="*50+"\n"*2) 
    rbd.set('download_progress',obj.get_progress_bar()) 

    time.sleep(0.2) 

然後在需要了解此下載

rdb = redis.Redis() 
val = rdb.get('download_progress') 
+0

所以我並不需要Django的Redis的Django的看法? – HolyFredy

+0

我不明白它是如何有用的。這是一個替代memcache AFAIK – e4c5

+0

好的,謝謝你的回答 – HolyFredy