芹菜任务错误执行芹菜任务时:'AsyncResult'对象不可迭代

时间:2020-04-20 18:44:09

标签: django celery django-celery celery-task

我正在使用Celery在窗体的后台执行任务 提交。在POST请求期间提交表单后,我有 使用延迟方法创建了一个在后台执行的任务。 此任务使用来处理其他网站上的某些点击操作 Selenium Web驱动程序并在任务后返回两个python列表 执行。根据列表内容,我要显示弹出消息。

当我使用celery执行任务并运行Django网站时 提交表单上的开发服务器,我收到错误消息: “ AsyncResult”对象不可迭代。”

请提出如何解决此问题的建议,然后继续进行操作。

这是我的代码段: 通过网页上的硒操作获得的示例列表内容如下:

board_not_used_list = ['16123','14960']
board_mgr_permissions_not_present_list = [ '23456','45678']
    views.py:
    -------- 
    def conclude_key_issue_form(request, id=None):
        if id:
            action = 'edit'
            model = get_object_or_404(ConcludeKeyIssues, pk=id)

        else:
            action = 'submit'
            model = ConcludeKeyIssues()

        message = ""   


        if request.method == 'POST':

            form = ConcludeKeyIssuesForm(request.POST, instance=model)

            selected_model_name = request.POST.get('registered_model')      


            if form.is_valid():

                new_key_issue_request = form.save(commit=False)
                new_key_issue_request.integrator_id = request.user.username

                integrator_username = new_key_issue_request.integrator_id
                integrator_password = form.cleaned_data['integrator_pwd']

                new_key_issue_request.integrator_pwd = integrator_password

                new_key_issue_request.save()
                form.save_m2m()

                created_pk = new_key_issue_request.pk

                if id is None:
                    board_not_used_list,
                           board_mgr_permissions_not_present_list=                         
              task_check_board_availability_and_permissions.delay(created_pk)

            if board_not_used_list and 
board_mgr_permissions_not_present_list:
                alert_flag = True
                alert_message = "SAS Board ID's:{} in Not Used state."
                context = {'form': form, 'registered_model_data': registered_models,   
                           'alert': alert_flag, 'alert_message': json.dumps(alert_message)}
                return render(request, 'ConcludeKeyIssue.html', context)

            elif not board_not_used_list and board_mgr_permissions_not_present_list:
                alert_flag = True
                alert_message = "You don't have Board Manager Permissions"
                context = {'form': form, 'registered_model_data': registered_models,    
                           'alert': alert_flag, 'alert_message': json.dumps(alert_message)}
                return render(request, 'ConcludeKeyIssue.html', context)

            return HttpResponseRedirect('/swatapp/ConcludeKeyIssueList')

else:
    print("Fill Conclude Key Issues")
    form = ConcludeKeyIssuesForm(instance=model)    

    context = {'form': form,'Message': message, 'action': action}

    return render(request, 'ConcludeKeyIssue.html', context)

Tasks.py:
--------
@app.task(name="task_check_board_availability_and_permissions")
def task_check_board_availability_and_permissions(created_pk):
    print("From tasks.py conclude_key_issue_through_selenium")

    print("Conclude Key Issue Through Selenium")

    latest_record_pk = created_pk

    # Get the instances of ConcludeKeyIssues
    conclude_key_issue_obj_list = ConcludeKeyIssues.objects.all()

    # Get the latest created record details
    get_created_record_details = ConcludeKeyIssues.objects.get(pk=latest_record_pk)

    # Get the id or location value of selected from SAS URL
    sas_board_ids = get_created_record_details.sas_ids

    # Get SAS Board IDs in list
    sas_board_ids_list = sas_board_ids.split(",")


    # Input username and password
    username = get_created_record_details.integrator_id
    password = get_created_record_details.integrator_pwd

    board_not_used_list, board_mgr_permissions_not_present_list = \
        check_board_availability_and_permissions_for_all_requested_sas(sas_board_ids_list, username, 
                                                                       password)


    return board_not_used_list, board_mgr_permissions_not_present_list



settings.py:
------------
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'crispy_forms',
    'swatapp',
    'django_celery_results',
]
CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'django-db'

1。请提出解决此错误的方法,然后继续进行操作。

2。如何使用以下方法检索2个列表[board_not_used_list,board_mgr_permissions_not_present_list] 芹菜结果。

0 个答案:

没有答案