ndscheduler:来自nextdoor的cron替换库

ndscheduler的Python项目详细描述


#下一个调度程序

![阿帕奇](https://img.shields.io/hexpm/l/plug.svg)
[![构建状态](https://travis ci.org/nextdoor/ndscheduler.svg)(https://travis ci.org/nextdoor/ndscheduler)

``ndscheduler``是一个灵活的python库,用于构建自己的类cron系统来调度作业,即运行tornado进程来为restapi和web ui提供服务。就像[llvm]一样(http://llvm.org/),它为构建编译器提供了模块化和可重用的组件。

查看我们的博客文章-[我们不在nextdoor运行cron作业](https://engblog.nextdoor.com/we-don-t-run-cron-jobs-at-nextdoor-6f7f9cc62040.d2erw1pl6)

**``ndscheduler``当前在Mac OS X/Linux上支持Python2&;3。**

tractions](关键抽象)
*[立即尝试](立即尝试)
*[如何构建自己的cron替换](如何构建自己的cron替换)
*[安装ndscheduler](安装ndscheduler)
*[三件事](三件事)
*[参考实现](参考implementation)
*[为ndscheduler贡献代码](为ndscheduler贡献代码)
*[rest api](rest api)
*[web ui](web ui)


关键抽象

*[核心](https://github.com/nextdoor/ndscheduler/tree/master/ndscheduler/core):一堆可恢复组件
*[数据存储](https://github.com/nextdoor/ndscheduler/tree/master/ndscheduler/core/datastore):管理数据库连接并进行查询;可以支持postgres、mysql和sqlite。
*job:表示一个调度作业并决定如何运行一个并行作业。
*execution:presseNTS作业执行的实例。
*auditlog:记录何时和谁运行什么作业。
*[schedule manager](https://github.com/nextdoor/ndscheduler/blob/master/ndscheduler/core/scheduler_manager.py):访问数据存储以管理作业,即调度/修改/删除/暂停/恢复作业。
*[serve(https://github.com/nextdoor/ndscheduler/tree/master/ndscheduler/server):运行ScheduleManager并提供rest API和服务UI的Tornado服务器。
*[Web UI](https://github.com/nextdoor/ndscheduler/tree/master/ndscheduler/static):单页HTML应用程序;这是默认实现打开。

88%(http://localhost:8888)。

**演示**
(单击可全屏播放)
![ndscheduler demo](https://giant.gfycat.com/nastybossybeaver.gif)


如何使用pip(来自github repo)构建自己的cron替换

安装ndscheduler
#

如果您想要特定的标记版本
git+https://github.com/nextdoor/ndscheduler.git@v0.1.0\egg=ndscheduler




\nextdoor/ndscheduler.git=ndscheduler

pip install-e git+https://github.com/nextdoor/ndscheduler.git很快到pypi。)


调度程序](https://github.com/nextdoor/ndscheduler/blob/master/simple_scheduler/settings.py)。您需要指定python导入pa在运行服务器之前,在环境变量"ndscheduler\u settings\u module"中输入th。


所有可用的设置都可以在[默认设置.py](https://github.com/nextdoor/ndscheduler/blob/master/ndscheduler/default\u settings.py)文件中找到。

**服务器**


导入并运行``ndscheduler.server.server.schedulerServer`.

**作业**


每个作业都应该是一个独立的类,它是``ndscheduler.job.jobbase``的子类,并将作业的主逻辑置于``run()``函数中。

``还有"作业",你可以这样运行整个过程:

pythonpath=.:$(pythonpath)\
python simple_scheduler/scheduler.py

ithub.com/nextdoor/ndscheduler/tree/master/simple_scheduler)灵感目录:)


run it


xtdoor/ndscheduler/tree/master/simple_scheduler/jobs)。
*awesomejob:它只打印出您传入的2个参数。
*slackjob:它定期发送一条松弛消息,例如团队站立提醒。
*shelljob:它运行一个可执行命令,例如,运行curl对网页进行爬网。
*curljob:就像定期运行[curl](http://curl.haxx.se/)。

在setup.py中新的依赖项,您必须运行这个
make install

**运行单元测试**



**make test

**clean everything and start from scratch**


>最后,发送拉取请求。请确保[CI](https://travis-ci.org/nextdoor/ndscheduler)通过您的PR。

提供Web UI的默认实现。您可以通过覆盖这些设置来替换默认的web ui

static_dir_path=:static asset目录路径:
template_dir_path=:template目录路径:
app_index_page=:单页应用的html的文件名:

工作的数量**

![作业列表](http://i.imgur.com/dgilbkz.png)


**执行列表**

![执行列表](http://i.imgur.com/jpjzrlu.png)

**审核日志**

![审核日志](http://i.imgur.com/ehlzhhw.png)

**修改作业**

![修改作业](http://i.imgur.com/awv6xor.png)



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

推荐PyPI第三方库


热门话题
当使用RequestDispatcher时,servlets Java最终没有被调用   java生成对具有可变参数数的方法的调用   java如何使用select子句中的参数化列映射iBATIS的查询?   java无法创建类型为org的插件。阿帕奇。登录中。log4j。果心阿佩德。元素RollingFile的RollingFileAppender   java当子实体和父实体之间存在OneTONE JPA关系时,是否可以将其与父实体一起持久化?   Android上的java Facebook集成fbconnect断开链接   获取方法调用方的java机制   从列表创建Oracle阵列时出现java问题   添加和检索元素的ArrayList的java ArrayList   在java中从字符串中删除无效的XML字符   java如何构建完整生成的maven模块   java如何准确地改变播放所有分辨率midi文件的速度?   shell javac:无效标志:/src/中位_度。ubuntu中的java   java使用从其他类的方法检索到的信息