2

./manage.py 셸을 사용하여 코드를 연습 할 때 이해가되지 않는 부분이 있습니다.장고 멀티 프로세싱 기이 한

Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23) 
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> from multiprocessing import Process 
>>> from django.core.management import call_command 
>>> p = Process(target=call_command("processphoto", 1000)) 
Successfully populated photo "1000" (This is output from my processphoto command) 
>>> 

나는 p.start()을하거나하는 과정에서 다른 변수를 설정할 수있는 기회를 얻을 수 없다. 인스턴스에 따라 실행되는 것으로 보입니다. 내보기에서 코드를 사용하려고하면 여러 프로세스가 전혀 생성되지 않는 것으로 보입니다. 모든 것이 하나의 핵심에 남아 있습니다.

내가 뭘 잘못했거나 오해 했습니까? 다중 코어 서버를 완벽하게 활용하기 위해 별도의 프로세스에서 별도의 manage.py processphoto 명령을 생성하고 싶습니다.

답변

2

call_command(...)은 함수를 호출합니다. 대신, Process 별도로 함수 객체, call_command, 그 인수를 전달 :

p = Process(target=call_command, args = ("processphoto", 1000)) 
+0

찰흙을! 좋은 주인, 내가 처음 초보자 인 줄 알았어 ... 고마워. –

+0

걱정할 필요가 없습니다. 이것을 한 번보고 영원히 알 수 있습니다. – unutbu

+0

이렇게하면 모든 자식 사이에 데이터베이스 연결이 복사되고 문제가 발생할 수 있습니다. 모든 명령 스크립트에는 일종의 데이터베이스 상호 작용이 있기 때문에 나는 이것을 가져온다. 다음 문제에 대한 몇 가지 실마리를 스레드, 그리고 도움이되는 몇 가지 제안을한다 : [장고 멀티 프로세스 데이터베이스 연결] [1] [1] : http://stackoverflow.com/questions/8242837/django-multiprocessing-and-database-connections –