无法将模型方法访问到芹菜任务中

时间:2016-10-25 10:14:29

标签: django celery celery-task

我的Celery任务有些问题。在我的方法中,我想在后台同步用户的soundcloud音乐库

@task(name="synchronize_library")
def synchronize_library(user_id):
    from api.models import User

    logger.info("Enter in function")
    user = User.objects.get(pk=user_id)

    attr = getattr(user, "has_soundcloud_account")
    logger.info(callable(attr))

    if user.has_soundcloud_account():
        logger.info("User has account")
        # Do some stuff
    else:
        logger.info("User has not account")
        # Do some stuff

当我在同步上下文中调用此方法时,如:

synchronize_library(1)

一切正常,所以这个方法没有错误,但如果我打电话:

synchronize_library.delay(1)

这是我在芹菜记录器中看到的:

[2016-10-25 10:02:44,078: INFO/MainProcess] Received task: synchronize_library[3e8e8a67-c896-4d3e-96fe-0959abed749d]
[2016-10-25 10:02:44,081: INFO/Worker-1] synchronize_library[3e8e8a67-c896-4d3e-96fe-0959abed749d]: Enter in function
[2016-10-25 10:02:44,744: INFO/Worker-1] synchronize_library[3e8e8a67-c896-4d3e-96fe-0959abed749d]: True

所以我有一个方法has_soundcloud_account,但是当我决定调用这个函数时,这个过程似乎就停止了。

经过几次测试后,每次我尝试调用模型的方法时都会出现此行为。

知道发生了什么事吗?

编辑:这是我的方法代码has_soundcloud_account()

def has_soundcloud_account(self):
        return self.settings.soundcloud_access_token is not None

0 个答案:

没有答案