如何在不使用管理面板的情况下为django-celery任务提供参数?

时间:2016-03-03 12:52:34

标签: python django django-celery

我开发了一个django应用程序,它将采取备份,我想用芹菜做这件事,我需要知道芹菜的数据库是什么,这样我就可以从用户那里得到输入并将其作为参数提供给芹菜任务而不是使用管理面板选项。 我需要实现的目标:

def mycelerytask(hassomearguemnts):
    will do some work.

我需要以编程方式给出celery任务的参数,而不是使用管理面板的参数。

我想用django orm来实现这个目标。

2 个答案:

答案 0 :(得分:1)

您可以使用delay调用任务并将参数传递给它。

mycelerytask.delay(theargument)

答案 1 :(得分:1)

好的,我想你要问的是从django视图中插入值。你可以通过以下方式给出参数: 从数据中获取表单输入并将其解析为django-celery模型。 此示例用于将参数传递给PeriodictTask

from djcelery import PeriodicTask
def your_view(request):
    if request.method == 'POST':
          form = yourform(request.POST)
          if form.is_valid():
                yourformfield = form.cleaned_data['yourformfield']
                periodic_task = PeriodicTask(name=task_name, task='yourapp.tasks.yourtaskname', args=yourformfield)
                peridoc_task.save()
Now you've created a periodic task without using the admin panel