我正在尝试创建一个 Web 应用程序作为另一个 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,我可以导入线程,也可以从线程导入线程。这是怎么回事?
我见过其他的东西,比如如何在 Django和Celery中使用线程,但这似乎有点矫枉过正,而且我看不到该示例如何导入线程并使用 threading.Thread,而我不能。谢谢你。
编辑:我正在使用 Django 1.4.1、Python 2.7.3、Ubuntu 12.10、SQLite 作为数据库,并且我正在使用./manage.py runserver运行 Web 应用程序。