3
나는 내 애플 리케이션에 샐러리와 드롭 박스를 결합했으며, 이것으로 드롭 박스가 연결된 사용자는 자신의 사진을 저장할 수있다.작업 내 샐러리 작업
코드 조각을 작성했지만이 코드가 시스템을 죽일 수있는 무한 루프로 이어질 수 있습니다.
내가 탭하는 API는 한 번에 60 장의 사진 만 허용하여 페이지 매김을 제공합니다.
다음은 내 tasks.py 파일의 복사본입니다. 실제로 제대로 작동하지만 올바르게 작동하고 시스템에 너무 많은 영향을 미치지 않는지 확인하고 싶습니다.
class DropboxUsers(PeriodicTask):
run_every = timedelta(hours=4)
def run(self, **kwargs):
logger = self.get_logger(**kwargs)
logger.info("Collecting Dropbox users")
dropbox_users = UserSocialAuth.objects.filter(provider='dropbox')
for db in dropbox_users:
...
...
...
sync_images.delay(first, second, third_argument)
return True
@task(ignore_result=True)
def sync_images(token, secret, username):
"""docstring for sync_images"""
logger = sync_images.get_logger()
logger.info("Syncing images for %s" % username)
...
...
...
...
feed = api.user_recent_media(user_id='self', count=60)
images = feed[0]
pagination = feed[1]
for obj in images:
### STORE TO DROPBOX
...
...
...
response = dropbox.put_file(f, my_picture, overwrite=True)
### CLOSE DB SESSION
sess.unlink()
if pagination:
store_images.delay(first, second, third, fourth_argument)
@task(ignore_result=True)
def store_images(token, secret, username, max_id):
"""docstring for sync_images"""
logger = store_images.get_logger()
logger.info("Storing images for %s" % username)
...
...
...
...
feed = api.user_recent_media(user_id='self', count=60, max_id=max_id)
images = feed[0]
try:
pagination = feed[1]
except:
pagination = None
for obj in images:
### STORE TO DROPBOX
...
...
...
response = dropbox.put_file(f, my_picture, overwrite=True)
### CLOSE DB SESSION
sess.unlink()
if pagination:
### BASICALLY RESTART THE TASK WITH NEW ARGS
store_images.delay(first, second, third, fourth_argument)
return True
귀하의 전문성을 높이 평가합니다.