我可以使用
执行我的任务 scrape_adhoc_reporting([store], [types], inventory)
这是一个问题,因为这个任务很容易花费一个小时。所以我尽量让任务异步化。我尝试了以下两个:
scrape_adhoc_reporting.apply_async(args=[[store], [types], inventory])
scrape_adhoc_reporting.delay([store], [types], inventory)
这两种方法都不起作用。视图只是按预期重定向,但任务永远不会执行。错误日志中没有错误。你知道我哪里做错了吗?
Edit:在看了一会儿之后,我看到人们在谈论注册一个任务。这是我需要做的吗?
我遇到了同样的问题,我刚刚解决了它。数学是正确的:这是由于非运行的工人。
我在Windows上使用Django(1.5),芹菜(3.0+)和Django-芹菜。为了让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修复了这个问题。
如果你想让它远程运行,你需要一个工作进程来加载该任务,并配置一个路由系统来接收在调用者和工作进程之间发送的任务请求。
请查看有关工作人员和任务的芹菜文档
你正在运行的代码只是在本地执行任务。
在Windows中使用异步芹菜任务时,通常会通过设置参数来修复错误。
即:Django在celery.py文件中,你应该:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings')
os.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')
<==为Windows兼容性添加这一行
这将解决Windows上的问题,并且不会在其他系统上产生不兼容问题。