出现错误时如何重新启动 tweepy 脚本?

编程入门 行业动态 更新时间:2024-10-27 14:32:25
本文介绍了出现错误时如何重新启动 tweepy 脚本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个 python 脚本,可以将与跟踪关键字相关的推文连续存储到文件中.但是,由于下面附加的错误,脚本往往会反复崩溃.如何编辑脚本以使其自动重新启动?我已经看到了许多解决方案,包括这个(异常后重新启动程序)但我我不确定如何在我的脚本中实现它.

I have a python script that continuously stores tweets related to tracked keywords to a file. However, the script tends to crash repeatedly due to an error appended below. How do I edit the script so that it automatically restarts? I've seen numerous solutions including this (Restarting a program after exception) but I'm not sure how to implement it in my script.

import sys import tweepy import json import os consumer_key="" consumer_secret="" access_key = "" access_secret = "" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth) # directory that you want to save the json file os.chdir("C:\Users\json_files") # name of json file you want to create/open and append json to save_file = open("12may.json", 'a') class CustomStreamListener(tweepy.StreamListener): def __init__(self, api): self.api = api super(tweepy.StreamListener, self).__init__() # self.list_of_tweets = [] def on_data(self, tweet): print tweet save_file.write(str(tweet)) def on_error(self, status_code): print >> sys.stderr, 'Encountered error with status code:', status_code return True # Don't kill the stream print "Stream restarted" def on_timeout(self): print >> sys.stderr, 'Timeout...' return True # Don't kill the stream print "Stream restarted" sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api)) sapi.filter(track=["test"])

==============================================================================

===========================================================================

Traceback (most recent call last): File "C:\Users\tweets_to_json.py", line 41, in <module> sapi.filter(track=["test"]) File "C:\Python27\lib\site-packages\tweepy-2.3-py2.7.egg\tweepy\streaming.py", line 316, in filter self._start(async) File "C:\Python27\lib\site-packages\tweepy-2.3-py2.7.egg\tweepy\streaming.py", line 235, in _start self._run() File "C:\Python27\lib\site-packages\tweepy-2.3-py2.7.egg\tweepy\streaming.py", line 165, in _run self._read_loop(resp) File "C:\Python27\lib\site-packages\tweepy-2.3-py2.7.egg\tweepy\streaming.py", line 206, in _read_loop for c in resp.iter_content(): File "C:\Python27\lib\site-packages\requests-1.2.3-py2.7.egg\requests\models.py", line 541, in generate chunk = self.raw.read(chunk_size, decode_content=True) File "C:\Python27\lib\site-packages\requests-1.2.3-py2.7.egg\requests\packages\urllib3\response.py", line 171, in read data = self._fp.read(amt) File "C:\Python27\lib\httplib.py", line 543, in read return self._read_chunked(amt) File "C:\Python27\lib\httplib.py", line 603, in _read_chunked value.append(self._safe_read(amt)) File "C:\Python27\lib\httplib.py", line 660, in _safe_read raise IncompleteRead(''.join(s), amt) IncompleteRead: IncompleteRead(0 bytes read, 1 more expected)

推荐答案

通过为流编写新函数,弄清楚如何合并 while/try 循环:

Figured out how to incorporate the while/try loop by writing a new function for the stream:

def start_stream(): while True: try: sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api)) sapi.filter(track=["Samsung", "s4", "s5", "note" "3", "HTC", "Sony", "Xperia", "Blackberry", "q5", "q10", "z10", "Nokia", "Lumia", "Nexus", "LG", "Huawei", "Motorola"]) except: continue start_stream()

我通过使用 CMD + C 手动中断程序来测试自动重启.不过,很高兴听到测试此类功能的更好方法.

I tested the auto restart by manually interrupting the program with CMD + C. Nonetheless, happy to hear of better ways to test such functionality.

更多推荐

出现错误时如何重新启动 tweepy 脚本?

本文发布于:2023-10-16 00:43:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1495971.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:重新启动   脚本   出现错误   tweepy

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!