web-dev-qa-db-fra.com

Comment faire fonctionner le céleri sur Windows?

Comment exécuter le travailleur de céleri sur Windows sans créer le service Windows? Existe-t-il une analogie avec $ celery -A your_application worker?

14
nicks

Cela se fait de la même manière que sous Linux. Changer de répertoire en module contenant la tâche céleri et appeler "c:\python\python" -m celery -A module.celery worker a bien fonctionné.

3
nicks

Celery 4.0+ ne supporte pas officiellement la fenêtre déjà. Mais cela fonctionne toujours sur la fenêtre à des fins de développement/test.

Utilisez plutôt eventlet comme ci-dessous:

pip install eventlet
celery -A <module> worker -l info -P eventlet

Cela fonctionne pour moi sur window 10 + celery 4.1 + python 3.

Cette solution a résolu l'exception suivante:

[2017-11-16 21:19:46,938: ERROR/MainProcess] Task handler raised error: ValueError('need more than 0 values to unpack',)
Traceback (most recent call last):
  File "c:\users\wchen8\work\venv\weinsta\lib\site-packages\billiard\pool.py", line 358, in workloop
    result = (True, prepare_result(fun(*args, **kwargs)))
  File "c:\users\wchen8\work\venv\weinsta\lib\site-packages\celery\app\trace.py", line 525, in _fast_trace_task
    tasks, accept, hostname = _loc
ValueError: need more than 0 values to unpack

===== mettre à jour 2018-11 =====

Eventlet a un problème sur subprocess.CalledProcessError:

https://github.com/celery/celery/issues/4063

https://github.com/eventlet/eventlet/issues/357

https://github.com/eventlet/eventlet/issues/413

Alors essayez plutôt gevent.

pip install gevent
celery -A <module> worker -l info -P gevent

Cela fonctionne pour moi sur window 10 + celery 4.2 + python 3.6

24
Samuel Chen

oui:

celery -A your_application -l info

notez également que Celery a abandonné la prise en charge de Windows (depuis la v4) ,

pip install celery==3.1.25

3.1.25 était la dernière version qui fonctionne sous Windows (juste testé sur ma machine win10). N'a pas eu besoin de déclasser fleur (moniteur de navigateur pour le céleri) cependant.

Voir aussi le FAQ pour Windows

23
kumarz

Il existe deux solutions pour que Celery 4 fonctionne sous Windows:

  • utiliser un pool de simultanéité eventlet, gevent ou solo (si vos tâches sont liées aux E/S et non liées au processeur)
  • définissez la variable d'environnement FORKED_BY_MULTIPROCESSING = 1 (c'est ce qui provoque réellement l'échec du package de billard sous-jacent sous Windows depuis la version 4)

Voir https://www.distributedpython.com/2018/08/21/celery-4-windows pour plus de détails


2
Bjoern Stiel

J'ai exécuté la tâche céleri en utilisant le serveur RabbitMQ . RabbitMq est meilleur et simple que le courtier Redis

en exécutant le céleri, utilisez la commande "céleri - Un ouvrier du nom de projet --pool = solo -l info" et évitez cette commande "Céleri - Un ouvrier du nom de projet --Loglevel info"

0
Teja Muvva

J'ai créé un fichier .bat en plus de mon fichier manage.py avec ce code:

title CeleryTask
::See the title at the top.
cd 
cmd /k celery -A MainProject worker -l info

ainsi, chaque fois que je veux utiliser céleri, je double-clique simplement sur ce fichier de traitement par lots et il fonctionne parfaitement ... Et le fait que vous ne puissiez pas utiliser céleri 4 sur Windows est vrai.

0
Pourya