我正在尝试创建一个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,我可以导入线程,也可以从线程导入线程。这是什么交易?
我已经看过其他内容,例如How to use thread in Django和Celery,但这看起来有些过分,我看不出该示例如何导入线程并使用线程。当我不能时,我就看不到。 谢谢。
编辑:我正在使用Django 1.4.1,Python 2.7.3,Ubuntu 12.10,SQLite用于数据库,而我正在使用 ./ manage.py runserver 运行Web应用程序。
答案 0 :(得分:0)
这是一个愚蠢的问题。首先,我创建了一个名为“threading.py”的文件,有人建议我删除它,我做过(或者我以为我做过)。问题是因为我使用Eclipse,Eclipse的PyDev(Python)插件只删除了我创建的threading.py文件,并隐藏了* .pyc文件。我有一个挥之不去的threading.pyc文件挥之不去,即使PyDev有一个选项,我已经启用删除孤立的.pyc文件。