Python django自定义命令中的多处理引发了PermissionError:[WinError 5]访问被拒绝

Python django自定义命令中的多处理引发了PermissionError:[WinError 5]访问被拒绝,python,django,Python,Django,当我通过django运行命令时,我想对一个函数进行多处理。 我有以下代码: class Command(BaseCommand): #... def process_q(self): self.stdout.write(self.style.SUCCESS("starting")) def handle(self, *args, **options): p = multiprocessing.Process(target=self.pro

当我通过django运行命令时,我想对一个函数进行多处理。 我有以下代码:

class Command(BaseCommand):
    #...
    def process_q(self):
        self.stdout.write(self.style.SUCCESS("starting"))

    def handle(self, *args, **options):
        p = multiprocessing.Process(target=self.process_q)
        p.start()
运行该命令时,出现以下错误:

Traceback (most recent call last):
  File ".\manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "C:\Users\user\projects\leadne_django\leadne\chatbot_manager\management\commands\handle_mevent.py", line 43, in handle
    p.start()
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\process.py", line 105, in start
    self._popen = self._Popen(self)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\context.py", line 223, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\context.py", line 322, in _Popen
    return Popen(process_obj)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\popen_spawn_win32.py", line 65, in __init__
    reduction.dump(process_obj, to_child)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
TypeError: cannot serialize '_io.TextIOWrapper' object
PS C:\Users\user\projects\leadne_django\leadne> Traceback (most recent call last):
PS C:\Users\user\projects\leadne_django\leadne>
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\spawn.py", line 99, in spawn_main
    new_handle = reduction.steal_handle(parent_pid, pipe_handle)
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\reduction.py", line 87, in steal_handle
    _winapi.DUPLICATE_SAME_ACCESS | _winapi.DUPLICATE_CLOSE_SOURCE)
PermissionError: [WinError 5] Access is denied
回溯(最近一次呼叫最后一次):
文件“\manage.py”,第22行,在
从命令行(sys.argv)执行命令
文件“C:\Users\user\AppData\Local\Programs\Python\Python 36-32\lib\site packages\django\core\management\\ uuuuuuu init\uuuuuuu.py”,第364行,从命令行执行
utility.execute()
文件“C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site packages\django\core\management\\ uu_init___;.py”,执行中第356行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site packages\django\core\management\base.py”,第283行,从\u argv运行
self.execute(*args,**cmd_选项)
文件“C:\Users\user\AppData\Local\Programs\Python36-32\lib\site packages\django\core\management\base.py”,第330行,在execute中
输出=self.handle(*args,**选项)
文件“C:\Users\user\projects\leadne\u django\leadne\chatbot\u manager\management\commands\handle\u mevent.py”,第43行,在handle中
p、 开始()
文件“C:\Users\user\AppData\Local\Programs\Python36-32\lib\multiprocessing\process.py”,第105行,在开始处
self.\u popen=self.\u popen(self)
文件“C:\Users\user\AppData\Local\Programs\Python36-32\lib\multiprocessing\context.py”,第223行,在
返回_default_context.get_context().Process._Popen(Process_obj)
文件“C:\Users\user\AppData\Local\Programs\Python36-32\lib\multiprocessing\context.py”,第322行,在
返回Popen(过程对象)
文件“C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\multiprocessing\popen\u spawn\u win32.py”,第65行,在\uuu init中__
减少.转储(进程对象,到子进程)
文件“C:\Users\user\AppData\Local\Programs\Python36-32\lib\multiprocessing\reduce.py”,第60行,转储文件
ForkingPickler(文件、协议).dump(obj)
TypeError:无法序列化'\u io.TextIOWrapper'对象
PS C:\Users\user\projects\leadne\u django\leadne>回溯(最近一次呼叫最后一次):
PS C:\Users\user\projects\leadne\u django\leadne>
文件“C:\Users\user\AppData\Local\Programs\Python36-32\lib\multiprocessing\spawn.py”,第99行,在spawn\u main中
新的\u句柄=减少。偷取\u句柄(父\u pid,管道\u句柄)
文件“C:\Users\user\AppData\Local\Programs\Python36-32\lib\multiprocessing\reduce.py”,第87行,在steal\u句柄中
_winapi.DUPLICATE_SAME_ACCESS|_winapi.DUPLICATE_CLOSE_SOURCE)
PermissionError:[WinError 5]访问被拒绝