如何从 django 模板暂停和停止 celery 任务

Sas*_*ank 5 python django celery celery-task

我正在开发一个使用 celery 异步运行任务的 django 应用程序。现在,用户可以从网页提交表单以启动 celery 任务。但是无法通过单击 django 模板中的按钮来暂停或停止任务。

到目前为止,这是我的代码

芹菜任务

@shared_task
def get_website(website):
    website_list = return_website_list(website)

    return website_list
Run Code Online (Sandbox Code Playgroud)

在上面的任务中,我调用了一个return_website_list()函数来抓取所需的网站并返回该网站的链接列表。

output.html 模板

<div class="container">
    <button class="pause_btn" type="button">Pause task</button>
    <button class="resume_btn" type="button">Resume task</button>
    <button class="stop_btn" type="button">Stop task</button>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望能够在单击暂停按钮时无限期暂停任务并在单击恢复按钮时恢复任务或在单击停止按钮时完全停止任务的能力。

视图.py

def index(request):

    if request.method == 'POST':
        website = request.POST.get('website-name')
   
        get_website.delay(website)
        return redirect('output')

    return render(request, 'index.html')
Run Code Online (Sandbox Code Playgroud)

我在网上搜索,像这些link1link2link3。但是这些链接并没有帮助我实现我想要做的事情。

提前致谢

sah*_*ama -1

我的想法是一个名为状态的字段,状态将通过单击暂停按钮来设置。并在 celery 任务中的每个操作检查状态,如果处于暂停状态,则等待 1 秒并再次检查。我之前用这个想法来取消操作