【问题标题】:Is it possible to pass a celery task as parameter in a dango view?是否可以在 dango 视图中将芹菜任务作为参数传递?
【发布时间】:2021-11-18 02:36:22
【问题描述】:

我想知道是否可以在 django(基于函数)视图中将 celery 任务作为参数传递?

我不知道我是否做错了什么,但是当我尝试这样做时,我收到如下错误:

No connection adapters were found for '<@task: my_module.tasks.my_task....

代码如下所示:

def base_myview(request, task, arg1, arg2):
    do stuff ...
    taks.apply_async([arg1, arg2])
    do more stuff
    return some_response
def view1(request, view1_task, arg1, arg2):
    return base_myview(request, view1_task, arg1, arg2)

def view2(request, view2_task, another_arg1, another_arg2):
    return base_myview(request, view2_task, another_arg1, another_arg2)
# etc..

【问题讨论】:

    标签: python django view celery task


    【解决方案1】:

    也许(当然)这不是最好的解决方案,但是:

    TASK_DICT = {
        'taks1': view_task1,
        'task2': view_task2,
    }
    
    def base_myview(request, task_name: str, arg1, arg2):
        do stuff ....
        TASK_DICT[task_name].apply_async([arg1, arg2])
        do more stuff 
        return some_response
    
    def view1(request, arg1, arg2, task_name='task1'):
        return base_myview(request, task_name, arg1, arg2)
    
    def view2(request, arg1, arg2, task_name='task2'):
        return base_myview(request, task_name, arg1, arg2)
    

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 2019-04-10
      • 2016-03-22
      • 2018-01-16
      • 2017-01-22
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多