지금까지 내가 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
당신의 역 추적이 – seriyPS
@seriyPS ...의 cutted 또는 전체하지 보이는 유용 할 수 있습니다 들어, 당신은 옳았다. 최종 오류를 추가했습니다. – Geo