用于在并行环境中启动任务的库
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
- 项目
标签: