Jeffrey Chidi
Jeffrey Chidi

Reputation: 351

How to test celery with django on a windows machine

I'm looking for a resource, documentation or advise on how to test django celery on my windows machine before deploying on a Linux based server.

Any useful Answer would be appreciated and accepted.

Upvotes: 3

Views: 6742

Answers (4)

Nanda Gopal
Nanda Gopal

Reputation: 11

Don't know if celery is supported or not in windows officially now, but i am able to use celery directly on windows without any other workarounds.

currently installed it with pip install celery==5.0.5. I am successfully able to run background tasks and perform other features also from my Django app through Redis as broker.

Otherwise the best way for development purpose will be to use WSL as pointed out by others, although it has it's own pros and cons.

Upvotes: 0

Bjoern Stiel
Bjoern Stiel

Reputation: 4161

There are two workarounds to make Celery work (natively) on Windows - and therefore be able to test it as if it were on Linux.

  • use eventlet, gevent or solo concurrency pool (if your tasks as I/O and not CPU-bound)
  • set the environment variable FORKED_BY_MULTIPROCESS=1 (this is what actually causes the underlying billiard package to to fail under Windows since version 4)

https://www.distributedpython.com/2018/08/21/celery-4-windows/

Upvotes: 3

illagrenan
illagrenan

Reputation: 6555

Celery (since version 4 as pointed out by another answer) does not support Windows (source: http://docs.celeryproject.org/en/latest/faq.html#does-celery-support-windows). Even so, you have some options:

1) Use task_always_eager=True. This will run your tasks synchronously – with this, you can verify that your code is doing what it's supposed to do. Running tasks synchronously works even on Windows.

More info: http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-task_always_eager

2) Use WSL (Windows Subsystem for Linux).

More info: https://learn.microsoft.com/en-us/windows/wsl/install-win10#install-the-windows-subsystem-for-linux

3) Use Docker for Windows. You can run Celery Worker(s) and Celery Beat inside the container.

More info: https://docs.docker.com/docker-for-windows/

Personally, I use option 1) for unit testing and option 2) for development.

Upvotes: 10

Milad Khodabandehloo
Milad Khodabandehloo

Reputation: 1977

Actually you cant. Since Celery 4.x, Windows is no longer supported due to lack of resources. This is what official documentation of celery says.

Upvotes: 0

Related Questions