Django Celery Task不会使用.delay执行

时间:2013-04-05 12:20:15

标签: django celery

我可以使用

执行我的任务没问题
    scrape_adhoc_reporting([store], [types], inventory)

这是一个问题,因为这个任务很容易花费一个小时。所以我尝试让任务异步。我尝试了以下两种方法:

    scrape_adhoc_reporting.apply_async(args=[[store], [types], inventory])
    scrape_adhoc_reporting.delay([store], [types], inventory)

这两种方法都不起作用。视图只是重定向,但任务永远不会被执行。错误日志中没有错误。关于我做错了什么的任何见解?

编辑:再看一遍后,我看到有人在谈论注册任务。这是我需要做的事情吗?

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我刚解决了。 MattH是对的:这是由于没有跑步的工人。

我在Windows上使用Django(1.5),Celery(3.0+)和Django-Celery。为了让Celery Beat正常工作,我遵循了本教程:http://mrtn.me/blog/2012/07/04/django-on-windows-run-celery-as-a-windows-service/和Windows一样,Beat只能作为服务启动。

但是,正如您所说,我的任务已启动但未执行。这来自打包版本django-windows-tools(来自pip)中的一个错误。

我通过从GitHub(https://github.com/antoinemartin/django-windows-tools)下载最新版本的django-windows-tools来修复此问题。

答案 1 :(得分:1)

如果您希望远程运行它,则需要运行该任务的工作进程以及配置为在调用者和工作者之间发送任务请求的路由系统。

查看workerstasks的芹菜文档。

您正在运行的代码只是在本地执行任务。

答案 2 :(得分:0)

通常在Windows中使用异步celery任务时,会出现错误,该错误可以通过设置参数来解决。

即: 在文件 celery.py 中使用 Django ,您应该:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings') os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1') <==添加此行以获得Windows兼容性。

这将解决Windows上的问题,并且不会在其他系统上造成不兼容性问题。