2017-04-07 55 views
1

我有一個django應用程序在服務器上執行一些計算,最多可能需要30秒。我正在嘗試使用Django頻道創建一個進度指示器。使用Django頻道獲取進度指標

我的設置是根據本教程: https://realpython.com/blog/python/getting-started-with-django-channels/

一切工作作爲迄今爲止的預期。我通過web套接字提交任務。這是我的消費者接收的,它調用其他方法來完成任務,然後通過websocket返回結果。

但是,當我嘗試從同一個消費者發送多條消息時,所有消息都會在最後到達,而不是在發送時到達。

這是我的消費者的代碼:

@channel_session 
def ws_receive(message): 
    data = json.loads(message['text']) 
    reply_channel = message.reply_channel.name 

    Channel(reply_channel).send({ 
     "text": json.dumps({'progress': 'Starting Work'}) 
    })  

    # calls outside method to do work 
    result = perform_calculations(data, reply_channel) 

    Channel(reply_channel).send({ 
     "text": json.dumps({'progress': 'Finished Work','result':result }) 
    }) 

在本例中,我的前端接收「起始工作」,並在同一時間「完成的工作」的消息,即使存在之間有30第二間隙他們正在生成。

有沒有辦法讓這些消息實時到達?

回答