2013-01-04 103 views
-1

我試圖創建一個Web應用程序作爲另一個Python應用程序的前端。我讓用戶將數據輸入到表單中,並且在提交時,想法是將數據保存在數據庫中,並將數據傳遞給線程對象類。線程是基於用戶操作嚴格啓動的。我的問題是我可以導入線程,但不能訪問threading.Thread。當線程結束時,它將更新服務器,因此當用戶查看作業信息時,他們將看到結果。無法在Django應用程序中使用Python的threading.Thread應用程序

查看:

@login_required(login_url='/login') 
def createNetworkView(request): 
    if request.method == "POST": 
     # grab my variables from POST 
     job = models.MyJob() 
     # load my variables into MyJob object 
     job.save() 
     t = ProcessJobThread(job.id, my, various, POST, inputs, here) 
     t.start() 
     return HttpResponseRedirect("/viewJob?jobID=" + str(job.id)) 
    else: 
     return HttpResponseRedirect("/") 

我的線程類:

import threading # this works 
print "About to make thread object" # This works, I see this in the log 
class CreateNetworkThread(threading.Thread): # failure here 
    def __init__(self, jobid, blah1, blah2, blah3): 
     threading.Thread.__init__(self) 

    def run(self): 
     doCoolStuff() 
     updateDB() 

我得到:

Exception Type: ImportError 
Exception Value: cannot import name Thread 

但是,如果我在命令行中運行python,我可以導入線程和也可以從線程中導入Thread。這是怎麼回事?

我看到別的東西,比如How to use thread in DjangoCelery但似乎矯枉過正,我看不出這個例子可以導入線程和使用threading.Thread,當我不能。 謝謝。

編輯:我正在使用Django 1.4.1,Python 2.7.3,Ubuntu 12.10,SQLite for DB,而且我正在運行web應用程序./manage.py runserver

+0

線程類模塊文件的名稱是什麼? 如果您已將其命名爲'threading.py',則隱藏了python線程模塊。 –

+0

請顯示實際的完整回溯。您顯示的代碼不會導致該錯誤,因爲您不會導入Thread(您會得到AttributeError)。 –

+0

@DanielRoseman:不,如果你通過線程導入線程''''''你會得到一個'ImportError',看起來和他看到的完全一樣。 (但是這並沒有改變你的觀點,即他向我們展示的代碼並不是他實際運行的代碼。) – abarnert

回答

0

這是一個愚蠢的問題,我有。首先,我創建了一個名爲「threading.py」的文件,並且有人建議我刪除它,這是我做過的(或者以爲我做過)。問題出在我使用Eclipse之後,Eclipse的PyDev(Python)插件只刪除了我創建的threading.py文件,並且隱藏了* .pyc文件。儘管PyDev有一個選項可以讓我刪除孤立的.pyc文件,但我還是留下了纏綿纏繞的threading.pyc文件。

+0

請更新上面的問題以反映這一點。 – redlus

相關問題