我已经将pm2用于我的Node.js脚本,我喜欢它.
现在我有一个python脚本,它收集EC2上的流数据.有时脚本会爆炸,我希望进程管理器像pm2一样重启.
对于python,是否有与pm2相同的东西?我一直在四处搜寻,找不到任何东西.
这是我的错误
File "/usr/local/lib/python2.7/dist-packages/tweepy/streaming.py", line 430, in filter
self._start(async)
File "/usr/local/lib/python2.7/dist-packages/tweepy/streaming.py", line 346, in _start
self._run()
File "/usr/local/lib/python2.7/dist-packages/tweepy/streaming.py", line 286, in _run
raise exception
AttributeError: 'nonetype' object has no attribute 'strip'
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90:
这是一个简单的数据收集脚本
class StdOutListener(StreamListener):
def on_data(self, data):
mydata = json.loads(data)
db.raw_tweets.insert_one(mydata)
return True
def on_error(self, status):
mydata = json.loads(status)
db.error_tweets.insert_one(mydata)
if __name__ == '__main__':
#This handles Twitter authetification and the connection to Twitter Streaming API
l = StdOutListener()
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, l)
#This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby'
stream.filter(follow=[''])
我想它只是重新启动自己以防万一发生的事情.
解决方法:
UPD:请参阅以下答案以获得更好的解决方案
–
有几种解决方案.首先,您可以使用http://supervisord.org/这是一个不错的通用过程控制系统,其中包括许多开箱即用的功能,如自动重启,重启计数器,日志记录,灵活配置等.
除此之外,您可以将实现逻辑包装到一个函数中,在try除了块中运行它,捕获所有异常,当异常是cought时,再次运行该函数而不是退出脚本.在您的情况下,此类功能可能包括创建侦听器,身份验证和流部分.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。