2011-09-06 6 views
3

지금까지 내가 python manage.py celeryd 만 일한지 이런 식으로 시작 :코드에서 celeryd_multi 작업을 어떻게 처리해야합니까?

BinaryExecTask.delay(request.POST["binary_path"]) 

그리고 내 settings.py의 코드 :

python manage.py celeryd -l info --settings=settings

내보기에서 코드 것은이 수행 이건 :

import djcelery 
djcelery.setup_loader() 

BROKER_BACKEND = "djkombu.transport.DatabaseTransport" 
#celery 
BROKER_HOST = "localhost" 
BROKER_PORT = 5672 
BROKER_USER = "guest" 
BROKER_PASSWORD = "guest" 
BROKER_VHOST = "/" 

이며 백그라운드에서 일부 바이너리를 실행합니다. 문제는 바이너리 중 일부는 실행하는 데 꽤 짧은 시간이 걸리는 반면 나머지는 30 분 정도 소요될 수 있다는 것입니다. celeryd으로 작업하면 현재 작업이 완료 될 때까지 모든 작업이 차단됩니다.

python manage.py celeryd_multi start 3 --settings=settings -l info

이 오류를 제공합니다 :

celeryd-multi v2.3.1 
> Starting nodes... 
     > celery1.x: Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_manager(settings) 
    File "c:\code\python27\lib\site-packages\django-1.3-py2.7.egg\django\core\management\_ 
line 438, in execute_manager 
    utility.execute() 
    File "c:\code\python27\lib\site-packages\django-1.3-py2.7.egg\django\core\management\_ 
line 379, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "c:\code\python27\lib\site-packages\django_celery-2.3.3-py2.7.egg\djcelery\manage 
s\celeryd_multi.py", line 22, in run_from_argv 
    ["%s %s" % (argv[0], argv[1])] + argv[2:]) 
    File "c:\code\python27\lib\site-packages\celery-2.3.1-py2.7.egg\celery\bin\celeryd_mul 
172, in execute_from_commandline 
    self.commands[argv[0]](argv[1:], cmd) 
    File "c:\code\python27\lib\site-packages\celery-2.3.1-py2.7.egg\celery\bin\celeryd_mul 
205, in start 
    retcode = self.waitexec(argv) 
    File "c:\code\python27\lib\site-packages\celery-2.3.1-py2.7.egg\celery\bin\celeryd_mul 
354, in waitexec 
    pipe = Popen(argstr, env=self.env) 
    File "c:\code\python27\lib\subprocess.py", line 672, in __init__ 
    errread, errwrite) 
    File "c:\code\python27\lib\subprocess.py", line 882, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 

celeryd-multi start 3 -c 3이 같은 오류가 발생합니다 나는 celeryd_multi을 시작하지만, 실행 here 몇 가지 예를 보았다. 내가 더 많은 작업을 병렬로 실행할 수있는 샐러리 인스턴스를 성공적으로 시작할 수 있도록하려면 어떻게해야합니까? 또한 내 생각에 다른 것을해야 할까?

편집이 :

351   def waitexec(self, argv, path=sys.executable): 
352    args = " ".join([path] + list(argv)) 
353 ->   argstr = shlex.split(args.encode("utf-8")) 
354    pipe = Popen(argstr, env=self.env) 
(Pdb) p argstr 
['c:codepython27python.exe', 'manage.py', 'celeryd_detach', '-l', 'info', '[email protected]', 
'-n', 'celery1.x', '[email protected]'] 
(Pdb) p Popen(argstr, env=self.env) 
*** WindowsError: WindowsError(2, 'The system cannot find the file specified') 
(Pdb) 

그래서, 같은 일부 디버깅이 날 여기 주도 (사이트 - 패키지 \ 셀러리-2.3.1-py2.7.egg \ 셀러리 \ 빈 \의 celeryd_multi.py (354) waitexec) 우리는 파이썬에 대한 경로가 파괴된다는 것을 알 수 있습니다 :). 다음에 무엇을해야합니까?

EDIT2 : 나는 ... here

+0

당신의 역 추적이 – seriyPS

+0

@seriyPS ...의 cutted 또는 전체하지 보이는 유용 할 수 있습니다 들어, 당신은 옳았다. 최종 오류를 추가했습니다. – Geo

답변

1

이 떨어지게 Windows 특정처럼 보이는 문제를 열었다 당신은 또한

C:\code\python27\bin\python.exe manage.py celeryd_multi start 3 --settings=settings -l info 

같은 명령 줄에서 파이썬 실행 파일에 대한 전체 경로를 제공하려고 전체 경로를 사용 했 파이썬 파일이

C:\code\python27\bin\python.exe C:\path\to\your\project\manage.py celeryd_multi start 3 --settings=settings -l info 
+0

작동하지 않습니다. 솔직하게 말해서 왜 이것이 전체 경로를 필요로할까요, 단지'celeryd'가 상자 밖에서 일 했나요? – Geo

+0

예, Windows 관련 문제입니다. 물론 예상대로 작동해야하지만, Windows에서 제대로 유지할 수있는 리소스가 없습니다. Windows에서 셀러리를 유지 관리하는 것이 필사적으로 필요합니다! – asksol

+0

Btw, 이것이 버그 일 경우 bugtracker에서 문제를 열어야합니다 : http://github.com/ask/celery/issues 시간이 걸릴 수 있지만 결국 해결 될 것입니다. – asksol

관련 문제