我試圖創建一個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 Django和Celery但似乎矯枉過正,我看不出這個例子可以導入線程和使用threading.Thread,當我不能。 謝謝。
編輯:我正在使用Django 1.4.1,Python 2.7.3,Ubuntu 12.10,SQLite for DB,而且我正在運行web應用程序./manage.py runserver。
線程類模塊文件的名稱是什麼? 如果您已將其命名爲'threading.py',則隱藏了python線程模塊。 –
請顯示實際的完整回溯。您顯示的代碼不會導致該錯誤,因爲您不會導入Thread(您會得到AttributeError)。 –
@DanielRoseman:不,如果你通過線程導入線程''''''你會得到一個'ImportError',看起來和他看到的完全一樣。 (但是這並沒有改變你的觀點,即他向我們展示的代碼並不是他實際運行的代碼。) – abarnert