我有一个关于如何从Django运行并传递args到芹菜任务的问题。
我想要的是什么:
1从提交的表单中获取关键字(hashtagName
)
2将名称发送给定期任务,以便每隔30秒在页面上显示一次。
问题:
我不清楚应该如何运行。我应该跑:
python manage.py runserver
在一个终端中
和python manage.py celery worker -B
在另一个终端窗口上,让两个服务同时运行?
如果这是正确的方法,我怎么能将值从Django传递给芹菜任务?由于任务将在我的第二个命令后立即启动。
PS:我读过芹菜文档,关于periodic task的部分对我的问题没有帮助,因为我的函数的args来自用户输入。
谢谢!
如下面的答案所述,我应该开始收集数据的芹菜任务。如果这是正确的方法,我该如何开始工作?我还不清楚如何同时启动芹菜工作者和django服务器。
我应该在终端中运行命令,如
$ celery -A proj worker -l info
python manage.py runserver
并在视图函数中调用taskfunction().delay
?
答案 0 :(得分:1)
这对芹菜来说真的不是一份工作。这可以用于后台任务,你可以触发它们并且可以独立工作 - 复杂的处理,繁重的api调用等等。
这里所需要的是每30秒刷新页面信息的方法。这最好是从浏览器本身完成 - 可能是使用带有setTimeout的JavaScript,要么触发整页请求,要么通过Ajax加载部分内容。
答案 1 :(得分:0)
这似乎完全是解决这个问题的错误方法。
您应该在客户端处理此定期更新,并在需要时为新数据发出AJAX请求。
您向常规django视图发出请求,每次都传递所需的用户输入。