Я создал модуль очистки "scraper.py", который также имеет возможность загружать файл, и импортировал этот модуль в django просмотров. Проблема в том, что в scraper.py этот «__name__='__main__
» включен там, где находится пул многопроцессорности, поэтому, когда я импортирую модуль и пытаюсь его запустить, он не работает, потому что он не является основным . Это скрипт (scraper.py), который использует метод пула.
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}")
Этот модуль импортируется в представления и затем запускается как
import scraper
def download_course(request, id):
course = course = get_object_or_404(Course, id=id)
course_name = (course.course_name)[:6]
person, error = create_session(request)
if "invalid" in error:
data = {"error":error}
return JsonResponse(data)
person.download_course_file(course_name)
data = {"success":"Your notes are being downloaded"}
return JsonResponse(data)
PS: create_session является функцией для инициализации объекта скребка с именем пользователя и паролем.
Есть ли обходной путь для этого оператора name , и даже если его нет, я не могу удалить его при развертывании в сервер, если сервер не использует windows в качестве своей ОС. Что вы предлагаете мне сделать?