用于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中模拟按键?   尽管元素存在,但HtmlUnit中的java ElementNotFoundException   在Java中,长双精度并发写入不是原子的吗?   java如何在另一个对象数组中打印对象的int值?   java在显示或更改视图后执行一些代码   java JFR:读取时发生OutOfMemoryError。jfr文件   java Android助手检查是否购买   java这种设计模式的好处是什么?   Weblogic 10.3中针对托管服务器的java部署问题   java如何获取字符串。在编译时投诉的格式   声明字符串数组时发生java错误   java JPA在多个并行线程中从表中删除时发生死锁   java Android:在按钮动画之后启动活动   java并发与JMS主题在春季   使用Lucene spatial search/DateRangePrefixTree进行java日期范围查询?   java可选接口问题   JavaDbUnit没有在每个方法之后清洗和插入数据库,所以测试不是独立的   java在IAIK PKCS11包装器中一对私钥和证书如何匹配?