2017-06-06 4 views
1

私はPythonスクリプトからの出力を私のdjango Webサーバーに取得したいと考えています。
私はpySmartDLを自分のスクリプトで使用するので、起動時にdjangoが終了してdjangoが実行中のスクリプトからデータを取得する必要がある場合でも実行する必要があります。pythonスクリプトからdjangoに出力を取得

pySmartDLのexempleスクリプト:

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チャネルを使用して複雑な問題を起こさないでください。これは、あなたがレディスでできることです。

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のを必要としませんか? – HolyFredy

+0

どのように役立つかわかりません。それはmemcacheの代わりにAFAIK – e4c5

+0

、ありがとう、答えは – HolyFredy

関連する問題