result.ready() 在 Django Celery 中没有按预期工作?



我有一个django-celene视图,它执行特定的任务,并在任务成功完成后将其写入数据库。

我在做这个:

result = file.delay(password, source12, destination)

而且,

 if result.successful() is True:
      #writes into database

但在任务完成执行后,它不会进入if条件。我试过result.ready(),但没有成功。

编辑:上面的行在同一视图中:

def sync(request):
    """Sync the files into the server with the progress bar"""
    choice = request.POST.getlist('choice_transfer')
    for i in choice:
        source12 = source + '/' + i 
        start_date1 = datetime.datetime.utcnow().replace(tzinfo=utc)
        start_date = start_date1.strftime("%B %d, %Y, %H:%M%p")
        basename = os.path.basename(source12) #Get file_name
        extension = basename.split('.')[1] #Get the file_extension
        fullname = os.path.join(destination, i) #Get the file_full_size to calculate size
        result = file.delay(password, source12, destination)
        if result.successful() is True:
             #Write into database

e:#写入数据库

  1. 当您调用file.delay时,cerele会在稍后的某个时间点将要在后台运行的任务排队。

  2. 如果您立即检查result.successful(),它将为false,因为任务尚未运行。

如果您需要连锁任务(一个接一个地开火(,请使用Celery的工作流解决方案(在本例中为连锁(:

def do_this(password, source12, destination):
    chain = file.s(password, source12, destination) | save_to_database.s()
    chain()

@celery.task()
def file(password, source12, destination):
    foo = password
    return foo

@celery.task()
def save_to_database(foo):
    Foo.objects.create(result=foo)

相关内容

  • 没有找到相关文章

最新更新