导入外部模块时使用Django进行多处理

时间:2020-05-02 21:47:27

标签: python django multiprocessing

我构建了一个抓取模块“ scraper.py”,该模块也具有下载文件的功能,并且将该模块导入了django视图。问题是在scraper.py中,多处理池所在的位置包含了该“ enter code public function show($id = null, UserRepository $userRepository, Request $request, PaginatorInterface $paginator) { if($id) $user = $userRepository->find($id); else $user = $this->getUser(); $client = $user->getClientInfo(); $myClients = $userRepository->getAllClients(false, $user); $myClients = $paginator->paginate( $myClients, $request->query->getInt('page_c', 100) ); $referal = null; $licences = null; if ($client) { $referal = $client->getReferal(); $licences = $client->getLicences(); } //$licences = $module->getLicences(); return $this->render('resellers/show.html.twig', [ 'controller_name' => 'ResellersController', 'user' => $user, 'client' => $client, 'referal' => $referal, 'licences' => $licences, 'my_clients' => $myClients, ]); } ”,因此,当我导入模块并尝试运行它时,它不起作用,因为它不是主要。 这是使用pool方法的脚本(scraper.py)。

__name__='__main__

此模块在视图中导入,然后运行为

 def download(self, url):
    response = self._is_downloadable(url)
    if response:
        name = response.headers.get('content-disposition')
        fname = re.findall('filename=(.+)', name)
        if len(fname) != 0:
            filename = fname[0]
            filename = filename.replace("\"", "")
            print(filename)
        else :
            filename = "Lecture note"
        with open(filename, 'wb') as files:
            for chunk in response.iter_content(100000):
                files.write(chunk)

def download_course_file(self, course):
    username = self._login_data["username"]
    p = Path(f"{username}-{course}.txt").exists()
    if not p:
        self.get_download_links(course)
    statime = time.time()
    if __name__ == "__main__":
        with Pool() as p:  
            with open(f"{username}-{course}.txt", "r") as course_link:
                data = course_link.read().splitlines(False)[::2]
                p.map(self.download, data)
                print(data)
        print(f"Process done {time.time()-statime}")

PS:create_session是用于使用用户名和密码初始化刮板对象的功能。

name 语句是否有解决方法,即使没有,只要服务器不使用Windows,也无法在部署到服务器时将其删除它的操作系统。

0 个答案:

没有答案
相关问题