当前位置: 首页 > 面试题库 >

如何为Node.js运行pm2之类的python脚本

张伯寅
2023-03-14
问题内容

我已经使用pm2了Node.js脚本,而且我喜欢它。
现在,我有了一个Python脚本,可以在EC2上收集流数据。有时脚本会爆炸,我希望进程管理器像pm2一样重新启动自身。

是否有与pm2 for python相同的东西?我一直在搜索,找不到任何东西。

这是我的错误

  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 except块中运行它,捕获所有异常,当异常发生时,再次运行该函数而不是退出脚本。在您的情况下,此功能可能包括创建侦听器,身份验证和流部分。



 类似资料:
  • Pm2默认的start命令使用Python2运行脚本。如何让它使用python3运行脚本?假设我的脚本名为app.py。

  • 问题内容: 我想在CENTOS服务器中运行python脚本: 我正在使用它,并且工作正常…问题是:即使关闭ssh控制台后,如何保持此脚本运行? 问题答案: 我使用此代码来守护我的应用程序。它允许您使用以下命令来编写脚本。 除此之外,我还有一个init.d脚本来控制我的服务。这使您可以在操作系统启动时自动启动服务。 这是一个简单的示例,可以助您一臂之力。只需将代码移到一个类中,然后从内部的函数中调用

  • 问题内容: 之前曾在不同程度上提出过这样的问题,但我觉得还没有以简明的方式回答,因此我再次提出。 我想在Python中运行脚本。可以说是这样的: 它获取文件位置,读取它,然后打印其内容。没那么复杂。 好吧,那我该如何在C#中运行它呢? 这就是我现在所拥有的: 当我传递位置和位置无效时。有人告诉我,我应该通过的,然后作为。 我已经寻找了一段时间,只能找到建议使用IronPython或类似工具的人。但

  • 问题内容: pm2是否可以运行npm start脚本,还是只需要运行 所以在发展中 然后在pm2的生产环境中运行类似 有一个等效的方法可以做到这一点: 问题答案: PM2现在支持npm start: 要将名称分配给PM2进程,请使用以下选项:

  • 问题内容: 我需要使用执行一组Cassandra DB命令的nodeJS运行Shell脚本文件。有人可以帮我吗? db.sh文件内部: 问题答案: 您可以使用shelljs模块执行任何shell命令