1
我有以下celery任务(简化),它与Twitter API交互。如何在执行芹菜任务时停止并在一段时间后继续执行?
@app.task
def get_followers(screen_name, **kwargs):
cursor = kwargs.get('cursor', -1)
followers = kwargs.get('followers', [])
while True:
response = twitter_api.call('followers', 'ids', screen_name=screen_name, cursor=cursor)
if response.status_code == '429': # RATE LIMIT EXCEEDED
# do something here
cursor = response.json()['next_cursor']
if cursor == 0: # we're done
break
return followers
我希望能够暂停任务一段时间达到速率限制时,并从停止点恢复执行。 (或者抛出一个错误并重试任务,传入额外的kwargs)。这如何实现?
检查:http://python-twitter.readthedocs.io/en /latest/rate_limits.html – MYGz
而这个:https://dev.twitter.com/rest/public/rate-limiting – MYGz
@ mohammad-yusuf-ghazi我知道这些网页,我特别感兴趣的是芹菜部分。据我所知,如果我有'sleep_on_rate_limit = True'并且超过了速率限制,那么这个任务就会“挂在那里”,在接下来的15分钟内在工作池中占用空间,不是吗? –