def batch_update_user_data():
"""
Create sub tasks to update user data like enrollments,
certificates and grades from edX platform.
"""
expiration = now_in_utc() + timedelta(hours=5)
lock = Lock(LOCK_ID, expiration)
if not lock.acquire():
# Lock should have expired by now
log.error("Unable to acquire lock for batch_update_user_data")
return
users_to_refresh = calculate_users_to_refresh_in_bulk()
jobs = release_batch_update_user_data_lock.s(token=lock.token.decode())
try:
if len(users_to_refresh) > 0:
user_id_chunks = chunks(users_to_refresh)
job = group(
batch_update_user_data_subtasks.s(user_id_chunk, expiration.timestamp())
for user_id_chunk in user_id_chunks
)
jobs = job | jobs
finally:
jobs.delay()
评论列表
文章目录