Celery 4.x inicia (com correções # 4078), mas todas as tarefas travam
Use o tutorial das primeiras etapas (http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html)
aipo -Um trabalhador de tarefas --loglevel = info
add.delay (2,2)
A tarefa é executada e um resultado de 4 é produzido
O aipo falha.
"C: \ Arquivos de programas \ Python36 \ Scripts \ celery.exe" -A perse.celery worker -l info
-------------- aipo @ PETRUS v4.0.2 (latentcall)
--- * * * - Windows-10-10.0.14393-SP0 2017-06-08 15:31:22
-------------- [filas]
.> troca de aipo = chave de aipo (direta) = aipo
[tarefas]
. perse.tasks.celery_add
[2017-06-08 15: 31: 22.685: INFO / MainProcess] Conectado a amqp: // convidado : *@127.0.0.1: 5672 //[2017-06-08 15: 31: 22.703: INFO / MainProcess] mingle: em busca de vizinhos[2017-06-08 15: 31: 23,202: INFO / SpawnPoolWorker-5] processo filho 5124 chamando self.run ()[2017-06-08 15: 31: 23,207: INFO / SpawnPoolWorker-4] processo filho 10848 chamando self.run ()[2017-06-08 15: 31: 23,208: INFO / SpawnPoolWorker-10] processo filho 5296 chamando self.run ()[2017-06-08 15: 31: 23,214: INFO / SpawnPoolWorker-1] processo filho 5752 chamando self.run ()[2017-06-08 15: 31: 23,218: INFO / SpawnPoolWorker-3] processo filho 11868 chamando self.run ()[2017-06-08 15: 31: 23,226: INFO / SpawnPoolWorker-11] processo filho 9544 chamando self.run ()[2017-06-08 15: 31: 23,227: INFO / SpawnPoolWorker-6] processo filho 16332 chamando self.run ()[2017-06-08 15: 31: 23,229: INFO / SpawnPoolWorker-8] processo filho 3384 chamando self.run ()[2017-06-08 15: 31: 23,234: INFO / SpawnPoolWorker-12] processo filho 8020 chamando self.run ()[2017-06-08 15: 31: 23,241: INFO / SpawnPoolWorker-9] processo filho 15612 chamando self.run ()[2017-06-08 15: 31: 23,243: INFO / SpawnPoolWorker-7] processo filho 9896 chamando self.run ()[2017-06-08 15: 31: 23,245: INFO / SpawnPoolWorker-2] processo filho 260 chamando self.run ()[2017-06-08 15: 31: 23,730: INFO / MainProcess] mesclar: sozinho[2017-06-08 15:31: 23.747: INFO / MainProcess] aipo @ PETRUS pronto.[2017-06-08 15: 31: 49.412: INFO / MainProcess] Tarefa recebida: perse.tasks.celery_add [524d788e-e024-493d-9ed9-4b009315fea3][2017-06-08 15: 31: 49,416: ERROR / MainProcess] Erro gerado pelo manipulador de tarefas: ValueError ('valores insuficientes para descompactar (esperado 3, obtido 0)',)Traceback (última chamada mais recente):Arquivo "c: \ program files \ python36 \ lib \ site-packages \ billiard \ pool.py", linha 359, no workloopresult = (True, prepare_result (fun ( args, ** kwargs)))
Arquivo "c: \ program files \ python36 \ lib \ site-packages \ celery \ app \ trace.py", linha 518, em _fast_trace_task
tarefas, aceitar, nome do host = _loc
ValueError: valores insuficientes para desempacotar (esperado 3, obtido 0)
Consulte a solicitação de pull # 4078
FWIW Eu trabalhei em torno disso usando a implementação de pool de eventos (opção de linha de comando "-P eventlet").
A solução de @drewdogg deve ser mencionada no tutorial.
Tenho que confirmar: este bug aparece em
Celery 4.1.0
Windows 10 Enterprise 64 bit
ao executar o comando celery -A <mymodule> worker -l info
e a seguinte solução alternativa funciona:
pip install eventlet
celery -A <mymodule> worker -l info -P eventlet
basta definir FORKED_BY_MULTIPROCESSING = 1 variável de ambiente para a instância do trabalhador.
@auvipy Trabalhe para mim, obrigado.
@auvipy realmente resolve o problema :) 👍
adicionar:
importar os
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
antes de definir a instância do Celery é suficiente
talvez isso deva ser mencionado nos documentos? @wonderfulsuccess se preocupa em enviar uma solicitação de pull?
@wonderfulsuccess
Muito obrigado
@auvipy realmente resolve o problema
adicionar:
importar os
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
antes de definir a instância do Celery é suficiente
Obrigado, funcionou!
@auvipy se esta é apenas uma linha de código para corrigir, então por que não apenas corrigi-la dentro do aipo, em vez de usar os documentos para recomendar aos usuários a implementação de uma solução alternativa? Por que um bug que quebra completamente a plataforma com uma correção tão simples ainda é um problema depois de quase 2 anos?
onde você quer colocar o aipo? Eu acredito que isso é adequado para instruções específicas do Windows. se você quiser consertar no nível de código, venha com um PR apropriado.
@auvipy realmente resolve o problema :) 👍
adicionar:
importar os
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
antes de definir a instância do Celery é suficiente
Você é incrível, muito obrigado!
@auvipy tenho procurado uma resposta para este problema, passei muito tempo tentando consertar isso, muito obrigado
Comentários muito úteis
Tenho que confirmar: este bug aparece em
ao executar o comando
celery -A <mymodule> worker -l info
e a seguinte solução alternativa funciona: