Python 如何使用mod_wsgi运行django并使用多进程模块?

Python 如何使用mod_wsgi运行django并使用多进程模块?,python,django,mod-wsgi,multiprocessing,Python,Django,Mod Wsgi,Multiprocessing,我正在处理的工作流(用户方面)如下所示: 用户使用表单提交信息和文件 表单已保存 完成了额外的保存后处理 这很好,但保存后处理需要相当长的时间,因此我希望在后台执行此操作,并向用户发出一条消息,通知用户正在处理,请稍后返回。不幸的是,这似乎不起作用;我现在得到的是: if form.is_valid(): p = multiprocessing.Process(target=form.save) p.start() return Htt

我正在处理的工作流(用户方面)如下所示:

  • 用户使用表单提交信息和文件
  • 表单已保存
  • 完成了额外的保存后处理
这很好,但保存后处理需要相当长的时间,因此我希望在后台执行此操作,并向用户发出一条消息,通知用户正在处理,请稍后返回。不幸的是,这似乎不起作用;我现在得到的是:

    if form.is_valid():
        p = multiprocessing.Process(target=form.save)
        p.start()
        return HttpResponseRedirect('/running')
但我得到的错误是:

IOError at /content/script/new/
sys.stdout access restricted by mod_wsgi
...
/usr/lib/python2.6/multiprocessing/forking.py in __init__
    # We define a Popen class similar to the one from subprocess, but
    # whose constructor takes a process object as its argument.
    #
    class Popen(object):
        def __init__(self, process_obj):
    >>>>        sys.stdout.flush() ...
            sys.stderr.flush()
            self.returncode = None
            self.pid = os.fork()
            if self.pid == 0:
                if 'random' in sys.modules:
▼ Local vars
Variable    Value
process_obj 
<Process(Process-1, initial)>
self    
<multiprocessing.forking.Popen object at 0xb8a06dec>
io在/content/script/new处出错/
受mod_wsgi限制的sys.stdout访问
...
/init中的usr/lib/python2.6/multiprocessing/forking.py__
#我们定义了一个类似于subprocess的Popen类,但是
#其构造函数将流程对象作为其参数。
#
类Popen(对象):
定义初始化(自身、过程对象):
>>>>sys.stdout.flush()。。。
sys.stderr.flush()
self.returncode=None
self.pid=os.fork()
如果self.pid==0:
如果系统模块中为“随机”:
▼ 局部变量
可变值
过程对象
自己
python有没有更神奇的方法来做到这一点?Django呢?如果没有,如何继续使用多处理?

使用

mod_wsgi环境可以是多线程的——这取决于您的配置。您不想干扰Apache、mod_wsgi和Django已经在使用线程和进程来管理web服务器吞吐量的方式


您必须假设Django操作是一个单线程,除了尽快响应Apache之外,无法执行任何操作。

错误是因为您使用的是旧的mod_wsgi版本,而且还因为您没有阅读:


正如其他人所说,您最好还是使用芹菜之类的东西,并在Apache进程之外触发这些东西。

在线程中运行它,而不是在进程中运行。或者用芹菜之类的东西。