用于Linux后台程序测试的NoseApp扩展

noseapp_daemon的Python项目详细描述


安装

pip install noseapp_daemon

创建流道

from noseapp.ext.daemon import DaemonRunner

class MyPythonDaemon(DaemonRunner):

    CMD_PREFIX = 'python'
    DAEMON_BIN = '/path/to/daemon/daemon.py'


my_daemon = MyPythonDaemon('my_daemon')
my_daemon.add_cmd_option('-c', '/path/to/config')
my_daemon.start()

创建后台程序插件

from noseapp.ext.daemon import DaemonPlugin


class MyPythonDaemonPlugin(DaemonPlugin):

    def init(self, daemon):
        # do something

    def before_start(self, daemon):
        # do something

    def after_start(self, daemon):
        # do something

    def before_stop(self, daemon):
        # do something

    def after_stop(self, daemon):
        # do something


my_daemon = MyPythonDaemon('my_daemon', plugin=MyPythonDaemonPlugin())

创建服务

from noseapp.ext.daemon import DaemonService

class MyDaemonService(DaemonService):

  name = 'my_service'

  def setup(self):
      self.daemon = MyPythonDaemon('my_daemon')

  def start(self):
      self.daemon.start()

  def stop(self):
      self.daemon.stop()

  ...


service = MyDaemonService()
service.start()
service.restart()

创建管理

from noseapp.ext.daemon import DaemonManagement

management = DaemonManagement(app)
management.add_daemon(
    MyPythonDaemon('my_daemon', plugin=MyPythonDaemonPlugin()),
)
daemon = management.daemon('my_daemon')

def error_handler(daemon, e):
    # do something

with management.checkout_daemon('my_daemon', except_exc=Exception, error_handler=error_handler) as daemon:
    daemon.restart()

management.add_service(MyDaemonService())
service = management.service('my_service')

# to install as extension
management.install(app)

suite = Suite(__name__, require=['my_daemon'])

# management.stop_all()
# management.stop_daemons()
# management.stop_services()
# management.restart_all()
# etc ...

预设值

noseapp.ext.daemon.presets import NGINXDaemon
noseapp.ext.daemon.presets import UWSGIDaemon
...


nginx = NGINXDaemon()
uwsgi = UWSGIDaemon()

nginx.add_cmd_option('-c', '/path/to/config')
uwsgi.add_dmd_option('--ini', '/path/to/config')

nginx.start()
uwsgi.start()
...

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Slick2D鼠标单击在Windows 10中不起作用   java在多线程中使用titan graph的最佳实践是什么?   java以编程方式访问清单。主类MF   安卓区分对JavaSpring后端的web和本机应用程序请求   java StringTemplate getInstanceOf返回null   java InvalidDataAccessApiUsageException:未找到线程绑定请求:   编码在Java中只对查询键和参数进行url编码的最佳方法是什么?   java如何使用mavenjarplugin从自定义jar文件中排除METAINF文件夹   Java:引发异常后程序未崩溃   安卓如何通过文件名找到/res/raw文件夹中文件的资源id?   html Selenium Java与HTML5的拖放   java是否可以在不同的对象中使用单个输入?   java谷歌应用引擎cron作业后端   java如何将列表项的信息传递给新的列表活动?   java是否可以要求junit在进行测试之前运行一个命令?   在异常中提供附加信息的java可持续方法?   java可编辑JComboBox:使用快捷方式启动操作时获取当前值   java运行时错误“名称错误:applicationarbre/Main”   继承java如何获取超类方法来修改子类字段