[英]python long running daemon job processor
我想编写一个长期运行的进程(Linux守护程序),该进程有两个作用:
我本来是将其作为一个简单的程序运行的,该程序可以运行并执行我随后进行的更新,但是现在我有了REST要求,并且还想更改某些作业的频率,但不更改其他作业的频率(假设所有工作都有不同的频率)。
我有0个编写长期运行的流程的经验,尤其是那些自行完成而不是响应请求的流程。
我的基本计划是在单独的线程/进程中运行REST部分,并认为我将分别运行Jobs部分。
我想知道是否存在任何模式,特别是python(我看过但还没有找到我想要做的事的任何示例),或者是否有人对从哪里开始过渡我的项目来满足这些建议有任何建议新的要求。 我看过一些涉及日程安排的项目,但我确实在这里寻找真实的用户体验/建议。 什么对您有效/不起作用?
如果REST服务器和计划的作业没有共同之处,请执行两个单独的实现,即REST服务器和作业,然后将它们作为单独的进程运行。
如前所述,请查看现有计划程序中的工作内容。 我不知道Twisted是否可以替代,但您可能要检查此平台。
如果OTOH,REST接口调用与计划作业相同的功能,则应尝试将它们视为具有相同功能的两个接口,例如:
长期运行的高可用性进程的一个共同特征是拥有一个额外的“主管”进程,该进程仅检查必要的恶魔是否已启动并正在运行,并在必要时重新启动它们。
一种选择是从此列表中简单选择一个轻量级的WSGI服务器:
并让它完成一个长期运行的处理请求的流程。 (我建议使用Spawning 。)您的代码可以专注于REST API并通过定义良好的WSGI接口处理请求,并安排作业。
您至少可以使用几个调度库,但是我对它们了解不多:
我通常使用cron
进行计划。 至于REST,您可以使用众多的Web框架之一。 但是仅运行SimpleHTTPServer就足够了。
您可以使用cron
@reboot计划REST服务的启动
@reboot (cd /path/to/my/app && nohup python myserver.py&)
调度程序的通常设计模式是:
根据您的情况进行适当的调整(例如,有时您可能希望重新安排作业以使其开始运行而不是结束时再次运行)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.