-1

我正在尝试创建一个 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,我可以导入线程,也可以从线程导入线程。这是怎么回事?

我见过其他的东西,比如如何在 DjangoCelery中使用线程,但这似乎有点矫枉过正,而且我看不到该示例如何导入线程并使用 threading.Thread,而我不能。谢谢你。

编辑:我正在使用 Django 1.4.1、Python 2.7.3、Ubuntu 12.10、SQLite 作为数据库,并且我正在使用./manage.py runserver运行 Web 应用程序。

4

1 回答 1

0

这是我遇到的一个愚蠢的问题。首先,我创建了一个名为“threading.py”的文件,有人建议我删除它,我做了(或认为我做了)。问题是因为我使用 Eclipse,Eclipse 的 PyDev (Python) 插件只删除了我创建的 threading.py 文件,并隐藏了 *.pyc 文件。我有一个挥之不去的 threading.pyc 文件,尽管 PyDev 有一个选项,我已启用删除孤立的 .pyc 文件。

于 2013-01-07T19:18:49.780 回答