2017-06-06 102 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