如何在 Windows 机器上用 django 测试 celery

Posted

技术标签:

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

我正在寻找有关如何在基于 Linux 的服务器上部署之前在我的 Windows 机器上测试 django 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,尽管它有自己的优点和缺点。

【讨论】:

以上是关于如何在 Windows 机器上用 django 测试 celery的主要内容,如果未能解决你的问题,请参考以下文章

如何在windows上用C语言实现MQTT协议

Windows10上用命令行,奢侈的享受?

如何将 elixir 应用程序从 Windows 开发机器部署到 Ubuntu 服务器

Jmeter工具做性能测试 常见的错误汇总

在linux服务器上用jmeter进行测性能,监控cup等信息。测试完成后导出的报告如下图,且监听正常的?

如何在 Windows XP 上用 cefpython3 编写一个简单的浏览器