问题
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.
回答1:
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://docs.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.
回答2:
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/
回答3:
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.
来源:https://stackoverflow.com/questions/51480807/how-to-test-celery-with-django-on-a-windows-machine