- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 tweepy 运行一个 python 脚本,它在英语推文的随机样本中流式传输(使用 twitter 流式 API)一分钟,然后交替搜索(使用 twitter 搜索 API)一分钟,然后返回。我发现的问题是,在大约 40 多秒后,流媒体崩溃并出现以下错误:
完整错误:
urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))
读取的字节数可以从 0 到 1000 不等。
第一次出现这种情况时,流过早中断,搜索功能提前启动,搜索功能完成后,它再次返回流,第二次出现此错误时,代码崩溃。
我正在运行的代码是:
# Handles date time calculation
def calculateTweetDateTime(tweet):
tweetDateTime = str(tweet.created_at)
tweetDateTime = ciso8601.parse_datetime(tweetDateTime)
time.mktime(tweetDateTime.timetuple())
return tweetDateTime
# Checks to see whether that permitted time has past.
def hasTimeThresholdPast():
global startTime
if time.clock() - startTime > 60:
return True
else:
return False
#override tweepy.StreamListener to add logic to on_status
class StreamListener(StreamListener):
def on_status(self, tweet):
if hasTimeThresholdPast():
return False
if hasattr(tweet, 'lang'):
if tweet.lang == 'en':
try:
tweetText = tweet.extended_tweet["full_text"]
except AttributeError:
tweetText = tweet.text
tweetDateTime = calculateTweetDateTime(tweet)
entityList = DataProcessing.identifyEntities(True, tweetText)
DataStorage.storeHotTerm(entityList, tweetDateTime)
DataStorage.storeTweet(tweet)
def on_error(self, status_code):
def on_error(self, status_code):
if status_code == 420:
# returning False in on_data disconnects the stream
return False
def startTwitterStream():
searchTerms = []
myStreamListener = StreamListener()
twitterStream = Stream(auth=api.auth, listener=StreamListener())
global geoGatheringTag
if geoGatheringTag == False:
twitterStream.filter(track=['the', 'this', 'is', 'their', 'though', 'a', 'an'], async=True, stall_warnings=True)
if geoGatheringTag == True:
twitterStream.filter(track=['the', 'this', 'is', 'their', 'though', 'a', 'an', 'they\'re'],
async=False, locations=[-4.5091, 55.7562, -3.9814, 55.9563], stall_warnings=True)
# ----------------------- Twitter API Functions ------------------------
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# --------------------------- Main Function ----------------------------
startTime = 0
def main():
global startTime
userInput = ""
userInput.lower()
while userInput != "-1":
userInput = input("Type ACTiVATE to activate the Crawler, or DATABASE to access data analytic option (-1 to exit): \n")
if userInput.lower() == 'activate':
while(True):
startTime = time.clock()
startTwitterStream()
startTime = time.clock()
startTwitterSearchAPI()
if __name__ == '__main__':
main()
我已经删除了搜索功能和数据库处理方面,因为它们是分开的,以避免代码困惑。
如果有人知道为什么会发生这种情况以及我如何解决它,请告诉我,我很想知道任何见解。
我尝试过的解决方案:
带有 http.client.IncompleteRead 的 Try/Except block :
根据 Error-while-fetching-tweets-with-tweepy
将 Stall_Warning = 设置为 True:
根据 Incompleteread-error-when-retrieving-twitter-data-using-python
移除英语语言过滤器。
最佳答案
已解决。
致那些好奇或遇到类似问题的人:经过一些实验,我发现传入推文的积压是问题所在。每次系统收到一条推文时,我的系统都会运行一个实体识别和存储过程,这会花费一小段时间,并且在收集数百到数千条推文的过程中,这个积压变得越来越大,直到 API 无法处理它并且抛出了那个错误。
解决方案:将您的“on_status/on_data/on_success”函数剥离到最基本的部分,并在流式传输 session 关闭后单独处理任何计算,即存储或实体识别。或者,您可以让您的计算更有效率,并使时间差距变得微不足道,由您决定。
关于python - 推特流媒体 API - urllib3.exceptions.ProtocolError : ('Connection broken: IncompleteRead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53326879/
我想编写一个程序来从 Twitter 获取推文,然后进行情感分析。我编写了以下代码,即使在导入所有必要的库后也出现错误。我对数据科学比较陌生,所以请帮助我。 我无法理解此错误的原因: class Tw
我正在使用 Tweepy 在 Python3 中编写一个 Twitter 流监听器。流式传输一段时间后出现此错误: urllib3.exceptions.ProtocolError: ('Connec
当我尝试使用 requests 下载一些图像时遇到了这个奇怪的错误,代码如下, import requests import StringIO r = requests.get(image_url,
这是一段网络挖掘脚本。 def printer(q,missing): while 1: tmpurl=q.get() try: ima
我正在尝试从网站获取一些数据。但是它返回给我incomplete read。我要获取的数据是大量嵌套链接。我在网上做了一些研究,发现这可能是由于服务器错误(之前完成的分 block 传输编码达到预期大
这个问题似乎以前已经得到解答,但似乎只发生在 Linux 上。 我对文件的唯一导入是 import http.client ,完整错误如下: Error: An error occurred whi
我正在用 python 为 bigcommerce 构建一个应用程序,使用 bigcommerce sdk ( https://github.com/bigcommerce/bigcommerce-a
我已经阅读了许多有关“IncompleteRead”的问题和答案,其中大多数(如果不是全部)最终都会建议卸载并重新安装 pip,或升级 pip,或卸载并重新安装您尝试安装的软件包. 我什至无法升级 p
通过 pip3 安装模块时遇到问题,尝试了 2014 年 12 月投票最高的线程中的几个建议,但仍然得到以下信息: sudo pip3 install send2trash Traceback
我有几个守护进程使用 boto 从 Amazon S3 读取许多文件。每隔几天,我就会遇到一种情况,即 httplib.IncompleteRead 从 boto 的深处被抛出。如果我尝试重试该请求,
当我尝试使用 pip 或 pip3 安装任何东西时,我得到: $ sudo pip3 install python3-tk Traceback (most recent call last): F
我正在尝试使用 beautifulsoup4 和 python3 来抓取 really long web page。由于网站的大小,当我尝试在网站中搜索某些内容时,http.client 会抛出错误:
我试图了解如何处理下面代码中的 http.client.IncompleteRead 错误。我使用 this post 中的想法处理错误.基本上,我认为这可能只是服务器限制了我可以访问数据的次数,但奇
在运行此程序以使用 Python 2.7.8 检索 Twitter 数据时: #imports from tweepy import Stream from tweepy import OAuthHa
使用 Airflow worker 和 webserver/scheduler 作为在 EC2 上的 Kubernetes Engine 上运行的 Docker 镜像 我们有一个包含 Kubernet
我正在使用 Python (2.7.6) 和 Py2Neo (1.6.4) 更新 Neo4j 服务器上的数据。我的加载函数是: from py2neo import neo4j,node, rel,
我正在尝试使用请求模块下载 PDF 文件,代码如下: import requests url = "" r = requests.get(url, stream=True, timeout=(60,
我的 Python 脚本,包含以下行: from requests import post ... while(1): result = readSensors().result payl
使用 tweepy 运行一个 python 脚本,它在英语推文的随机样本中流式传输(使用 twitter 流式 API)一分钟,然后交替搜索(使用 twitter 搜索 API)一分钟,然后返回。我发
我已经在服务器 A 上设置了 neo4j,并且我在服务器 B 上运行了一个应用程序来连接到它。 如果我在服务器 A 上克隆应用程序并运行单元测试,它工作正常。但是在服务器 B 上运行它们,设置运行了
我是一名优秀的程序员,十分优秀!