ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何为nodejs运行像pm2这样的python脚本

2019-10-04 14:55:13  阅读:161  来源: 互联网

标签:python python-2-7 node-js ubuntu process-management


我已经将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时,再次运行该函数而不是退出脚本.在您的情况下,此类功能可能包括创建侦听器,身份验证和流部分.

标签:python,python-2-7,node-js,ubuntu,process-management
来源: https://codeday.me/bug/20191004/1853339.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有