在Django框架中启动多个进程的方法是什么?

前提 tí)

Note: The provided phrase “前提” is already in Chinese and means “premise” or “prerequisite”.

在Django框架中,如果想要在处理过程中启动多个进程并进行并行处理时,下面将解释实现方法。

从多进程中导入池,
如果尝试以常规方式启动多进程,
将会引发Django错误。在Django中,无法基本上在一个进程中启动另一个进程。

实现的方式

在Django内部,无法启动另一个进程,因此可以通过将希望启动的多进程处理视为Django外部的处理来实现启动多个进程。

实施实例

from application.service.xx.xxService import xxService
from multiprocessing import Pool

class FileDownloadServiceImpl(FileDownloadService):
    def __init__(self, result_file_num):
        self.result_file_num = result_file_num

    def mainLogic(self):

        try:
            ##Djangoに関わるimportをここで実施
            from application.repository.mdData.fileDownload_repository import FileDownloadRepository
            from scrapingSystem.repositoryImple.mdData.fileDownload_repository import FileDownloadRepositoryImple

            .....................

            partedXlByteListLenCnt = len(self.start_index_list)
            pool = Pool(processes=partedXlByteListLenCnt)
            pool_result_list = []
            args_list = []
            for i in range(partedXlByteListLenCnt):
                args = (self.xl_byte_data, i, self.start_index_list[i], self.last_index_list[i],)
                args_list.append(args)
            pool_result_list = pool.map(multiByteParseStringWrapper, args_list)
            for pool_result in pool_result_list:
                self.process_index_que.append(pool_result[0])
                self.tree_list.append(pool_result[1])

            ......................

            return self.byte_in_list
        except:
            raise

    def __twoDevideByteData(self, start_index, last_index):
        ......................

def multiByteParseString(xl_byte_data, process_index, start_index, last_index):
    ......................

def multiByteParseStringWrapper(args):
    return multiByteParseString(*args)

通过确保与Django完全无关,可以以多进程的方式启动想要的方法,在Django的处理过程中,可以启动多个不同的进程。

广告
将在 10 秒后关闭
bannerAds