用于在并行环境中启动任务的库

jobslib的Python项目详细描述


Jobslib是一个在并行环境中启动Python任务的库。 我们的用例是。我们有两个数据中心(在不久的将来有三个数据中心), 在每一个数据中心都运行着一些服务器任务。但是只有一个任务可能 在所有数据中心中同时处于活动状态。Jobslib解决了这个问题。在

主要特点是:

  • 保存配置的类的祖先。在
  • 共享资源容器的祖先,例如数据库连接。在
  • 具有任务的类的祖先。在
  • 可从配置文件或环境变量配置。在
  • 活力-导出健康状况信息的机制 任务。Jobslib包含使用 Consul。在
  • Metrics–导出度量的机制。Jobslib包含实现 它使用InfluxDB。在
  • One Instance Lock–Lock,它只允许在 同一时间。Jobslib包含使用 Consul。在

安装

从源代码安装:

$ git clone https://github.com/seznam/jobslib.git
$ cd jobslib
$ python setup.py install

从PyPi安装:

^{pr2}$

Tox用于测试:

$ git clone https://github.com/seznam/jobslib.git
$ cd jobslib
$ pip install tox
$ tox --skip-missing-interpreters

使用

使用runjob命令从命令行启动任务:

$ runjob [-s SETTINGS] [--disable-one-instance] [--run-once]
         [--sleep-interval SLEEP_INTERVAL] [--run-interval RUN_INTERVAL]
         [--keep-lock]
         task_cls

# Pass settings module using -s argument
$ runjob -s myapp.settings myapp.task.HelloWorldTask --run-once

# Pass settings module using environment variable
$ export JOBSLIB_SETTINGS_MODULE="myapp.settings"
$ runjob myapp.task.HelloWorldTask --run-once

如果要编写自己的任务,请继承BaseTask类并重写 <引用>基本任务.task()方法。根据你的要求继承和 重写配置和/或上下文并设置settings模块。在

class HelloWorldTask(BaseTask):

    name = 'helloworld'
    description = 'prints hello world'

    def task(self):
        sys.stdout.write('Hello World!\n')
        sys.stdout.flush()

许可证

3条款BSD

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

推荐PyPI第三方库


热门话题
java不兼容类型:MainActivity无法转换为LifecycleOwner   java安卓是一种更有效的读取大文本文件的方法   java导出LWJGL本地人与项目?(IntelliJ IDEA)   JDK更新后,JavaJShell不再在下一行打印输出   父类对象上的继承Java比较子属性   Java:有没有一个容器可以有效地结合HashMap和ArrayList?   安卓 Java对象指针   java在annotationdriven Spring MVC应用程序中实现大气   java 安卓源代码构建应用找不到安卓supportv4。罐子   文件系统上的抽象层和Java中的jar/zip   java在水平滚动视图中添加多个图像?   java如何从firebase实时数据库中获取字符串数组   WIndows 10工作站上的java未满足链接错误   java命令在终端中工作,但在使用过程中出现“无结束引号”错误。执行官