【问题标题】:How to test celery with django on a windows machine如何在 Windows 机器上用 django 测试 celery
【发布时间】:2018-12-31 00:35:24
【问题描述】:

我正在寻找有关如何在基于 Linux 的服务器上部署之前在我的 Windows 机器上测试 django celery 的资源、文档或建议。

任何有用的答案都将受到赞赏和接受。

【问题讨论】:

    标签: django django-models redis rabbitmq celery


    【解决方案1】:

    Celery(因为另一个答案指出的版本 4)不支持 Windows(来源:http://docs.celeryproject.org/en/latest/faq.html#does-celery-support-windows)。即便如此,您也有一些选择:

    1) 使用task_always_eager=True。这将同步运行您的任务——通过它,您可以验证您的代码是否正在执行它应该执行的操作。即使在 Windows 上也能同步运行任务。

    更多信息:http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-task_always_eager

    2) 使用 WSL(适用于 Linux 的 Windows 子系统)。

    更多信息:https://docs.microsoft.com/en-us/windows/wsl/install-win10#install-the-windows-subsystem-for-linux

    3) 使用适用于 Windows 的 Docker。您可以在容器内运行 Celery Worker(s) 和 Celery Beat。

    更多信息:https://docs.docker.com/docker-for-windows/

    就个人而言,我使用选项 1) 进行单元测试,使用选项 2) 进行开发。

    【讨论】:

    • 据我所知,您只能将 Celery 与 WSLv2 一起使用...或者不能?
    • 官方不支持,但你可以在 Windows 上原生运行 Celery(所以没有 WSL、Docker 等)。使用最新版本 4.4.x 测试。
    【解决方案2】:

    有两种解决方法可以让 Celery 在 Windows 上(本机)工作 - 因此能够像在 Linux 上一样对其进行测试。

    • 使用 eventlet、gevent 或单独的并发池(如果您的任务是 I/O 且不受 CPU 限制)
    • 设置环境变量 FORKED_BY_MULTIPROCESS=1(这实际上是导致底层台球包自版本 4 起在 Windows 下失败的原因)

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

    【讨论】:

      【解决方案3】:

      其实你不能。从 Celery 4.x 开始,由于资源不足,不再支持 Windows。这就是official documentation of celery 所说的。

      【讨论】:

        【解决方案4】:

        不知道现在windows是否支持celery,但我可以直接在windows上使用celery,没有任何其他解决方法。

        当前使用pip install celery==5.0.5 安装它。我还能够通过 Redis 作为代理从我的 Django 应用程序中成功运行后台任务并执行其他功能。

        否则,开发目的的最佳方式将是使用其他人指出的 WSL,尽管它有自己的优点和缺点。

        【讨论】:

          猜你喜欢
          • 2016-02-09
          • 2018-09-10
          • 2013-11-08
          • 1970-01-01
          • 2020-01-28
          • 2020-11-16
          • 2020-05-08
          • 2023-04-09
          • 2014-01-31
          相关资源
          最近更新 更多