2012-10-05 82 views
1

我想實現這樣的功能:Python的進度條爲每個用戶

我會運行一個服務器,然後用戶會來的服務器,並提交自己的工作(我只需要按順序運行這些作業)。每項工作都需要很長時間才能完成,並且每項工作都有很多狀態(如已下載了多少推文等),我希望向用戶展示這些狀態。我執行任務的對象爲一類,即

Class Job: 
    def __init__(): 
     initial status 
    def do_download(): 
     do download 
    def report_status(): 
     return [self.tweets_downloaded, self.bad_tweets...] 

不過,我有種被困在這裏,因爲我不能叫「report_status()」,而在服務器運行do_download()。任何人有任何建議?我很感激。

我結束了使用線程來執行「do_download」函數。在主線程中,只需調用「report_status」,它會給我工作狀態。

回答

0

做你的長期運行的工作中,更新您在report_status

+0

這幾乎是我搜索一段時間後所做的。我使用了一個單獨的線程來啓動一個類方法,並且狀態作爲類變量保存在類中。這樣我就可以在主線程中調用另一個名爲「report」的類方法來報告狀態。非常感謝Joran –

2

使用Celery或其他任務隊列系統掃描一些status.txt文件線程。你所有的工作都將在不同的進程中運行(不用擔心線程安全或GIL),並且可以隨時更新中央數據存儲庫的進度。

+0

Thx Andrew。我試圖使用芹菜,但它似乎太重,我的小任務:) –

+0

好的,但請注意,你的任務可能看起來很複雜! –