问题描述
我在这里遇到了一个问题,我很快就获得了 Twitter 速率限制,而我没有快速获得新的 DM
这是代码,请帮帮我。
def getDM():
last_seen_id = retrieve_last_seen_id(FILE_NAME)
last_dms = api.list_direct_messages(1)
for messages in last_dms:
last_seen_id = messages.id #messages.message_create['sender_id']
store_last_seen_id(last_seen_id,FILE_NAME)
print("ID is : " + str(messages.id) + " || " + " Messaged : " +
str(messages.message_create['message_data']['text']))
api.destroy_direct_message(messages.id)
解决方法
一种方法是实现一个每 60 秒获取一次 DM 的线程,如果您尝试更频繁,则会超出限制
class TwitterThread():
def start(self):
self.interval = 60 # interval
thread = threading.Thread(target=self.run,args=())
thread.daemon = True # Daemonize thread
logging.info(f'TwitterThread runs every {self.interval} seconds')
thread.start()
def run(self):
while True:
try:
last_dms = api.list_direct_messages(1)
for messages in last_dms:
# process DM
api.destroy_direct_message(messages.id)
except Exception as e:
logging.exception(e)
time.sleep(self.interval) # sleep to wait 60 sec