我在Rails上使用JRuby 1.5.6来构建一个应用程序,它会定期消失并检索我订阅过的任何RSS播客.
我选择JRuby主要是因为我熟悉Java,希望利用Rails框架,最重要的是,当Ruby达不到我的要求时,我能够用Java执行"繁重的"任务.到目前为止(我还处于开发的早期阶段),这种混合方法一直运行得非常好.
我现在正处于需要将后续和长期运行任务的调度实施到后台进程的程度.我的要求是拥有一个数据库支持的调度系统,理想情况下,该系统记录良好,当前维护和清理.
我现在的问题是,经过多天研究合适的自我宝石包装解决方案后,由于我使用JRuby,我似乎只剩下很少的选择.
我试过的一些宝石......
rufus调度程序
在使用它之前我对它的接口和文档感到满意,但是缺乏数据库持久性,因此对我的要求造成了破坏.
delayed_job的
我理想的解决方案是delayed_job.然而,由于ObjectSpace被关闭(但我们可以通过重新启用来解决这个问题),但仍然维护和数据库支持的良好文档在JRuby下中断了,但是更加致命的依赖于守护进程gem会导致"fork不安全并且禁用默认情况下,JRuby"由于JRuby实现中的限制而导致错误.
在github上有一个没有依赖守护进程的分支,但是我不满意从主开发分支切换到一个分支,我仍然留下了ObjectSpace问题,我不确定它的性能影响.
石英的JRuby
虽然之前有过各种石英宝石,但这一最新产品是另一种提供光滑的类似红宝石的界面的尝试.然而,文档很少,我不确定这是否可以支持数据库,我的直觉是它不是.
问题
虽然我在这里只突出了3个选项,但我知道还有其他选项可用.然而,我无法找到解决方案来勾选所有3个需求框(文档,维护,数据库支持).
所以问题是......
有没有其他人处于这种情况并想出一个解决方案?
有没有人设法让delayed_job以任何形式工作?
有没有更好的解决方案,我忽略了并满足了我的需求?
我已经开发了一种调度算法,它提供了概率的软实时保证,但它看起来太新而且简单明了.虽然我把它与已发布的实时调度算法(EDF,零星服务器等)联系起来很困难.以下调度算法是否为已知的实时算法?
假设:
保证:
算法:
如果我们在linux上使用默认调度策略创建pthreads(pthread_create)或进程(fork),调度程序是否会在调度它们时处理具有相同优先级的进程和线程?
让我们说有一个线程的进程P1和两个线程T1 T2的进程P2
假设只有一个核心......调度将是P1 T1 P1 T2 P1 T1 P1 T2
要么
P1 T1 T2 P1 T1 T2
我正在使用Quartz Scheduling,有2个工作.第一个作业执行约2分钟的任务,第二个作业是为临时文件的清洁操作设置.因此,我需要设置计划,以便在第一个作业执行/完成执行任务后,我需要在第二个作业的帮助下执行清理操作.
考虑示例9 - Quartz 2.1.x下的Job Listeners,它声明我们可以定义一个名为jobWasExecuted(_,_)的方法; 在Job Listener中,它在第一个作业执行/或进入运行状态时执行.
我们是否能够设置可以监听第一个作业然后执行第二个作业的计划?要么,
我们是否能够像在Java多线程中那样定义join()方法,它可以在完成第一个作业时执行?
POSIX XSH 2.8.4进程调度定义了线程和进程的调度属性的行为.所述sched_*接口被指定为影响的调度特性过程,而不是线程.这在以下段落中阐明:
POSIX模型将"进程"视为系统资源的聚合,包括可由操作系统在其控制的处理器上调度的一个或多个线程.虽然进程具有自己的一组调度属性,但它们对各个线程的调度行为具有间接影响(如果有的话),如下所述.
和
对于具有系统调度争用范围的线程,进程调度属性不应对线程或专用于该线程的底层内核调度实体的调度属性或行为产生影响.
我对此的解读是,在只支持"系统调度争用范围"的系统上(Linux/glibc就是这样一个系统),这些sched_*函数应该绝对没有可观察到的效果.
这与Linux/glibc上当前行为的实际情况相反,其中sched_*设置了特定线程的调度属性.
除了想要更好地了解这种情况外,我想我有以下几个关键问题:
有没有关于这种差异的理由的文件?
我的标准阅读是否正确?特别是,对我来说这似乎真的很令人惊讶,sched_setparam并且sched_setscheduler将被指定在单线程应用程序中没有任何效果(主线程使用默认调度策略,无法更改,以及系统争用范围).
标准sched_*功能的用处是什么?在我看来,它们对大多数实现没有影响,即使对支持进程争用范围的实现也没有影响.有人可以描述它们的预期用途吗?
是否有适用于PHP的全功能作业调度包?我正在寻找与Java的Quartz相当的PHP .我很高兴从cron外部触发驱动系统的东西.我正在寻找的功能:
我知道这是一个很多问题,但它似乎是一组有用的功能,我认为有人可能会把它们的一部分组合在一起.
如果这个或部分内容尚未存在,那么将任何一个放在一起的指针,还是一个开源项目,其中某些子集的实现具有合理特征?
我正在尝试为我的软件开发公司的大约10-20人编写一个简单的员工计划软件.经过一番考虑后,我决定用Python,Ruby或PHP + Postgres/MySQL DB编写一个Web应用程序.在设计数据库模型时,我开始想知道哪种数据结构实际上最适合这种应用程序.
显示月视图的应用示例与此类似:
OCTOBER 1 2 3 4 5 6 7 8 9 ...
John Apple M M A A N N O O O ...
Daisy Pear O O O M M A A N N ...
Steve Cat A A N N O O O M M ...
Maria Dog N N O O O M M A A ...
Run Code Online (Sandbox Code Playgroud)
其中M - >为早班; A - >下午班次等(字母可以改为代码)
什么数据结构或数据库设计最适合这个?我正在考虑为每个用户存储类似于 - >"MMAANNOOOAAMMNNAAOO ..."的字符串(最多31个字符 - > 1个字符,1天); 月表将包含每个员工的此类字符串. …
谁安排调度程序?
这是创建的第一个任务以及如何创建第一个任务?它不需要任何资源或内存吗?不像鸡蛋和鸡蛋的情景?
调度程序不是一项任务吗?是否在每个时间片结束时获取CPU来检查哪个任务需要给CPU?
是否有任何良好的联系使得一个人能够深入思考和理解所有这些概念,而不是泄露出一些需要被遗忘的理论?
这个问题的灵感来自另一个问题.
如果多个线程在一个synchronized块上等待,并且锁定可用,谁先行?它是由线程优先级(然后先来先服务)?
并且适用相同的规则notify(使用多个wait线程)?
schedule()调用调度程序代码有两种情况 -
当进程自愿调用时 schedule()
定时器中断调用 schedule()
在案例2中,我认为schedule()在中断上下文中运行,但第一种情况呢?它是在调用它的进程的上下文中运行的吗?
还有更多场景可以调用schedule()吗?
scheduling ×10
linux ×3
java ×2
algorithm ×1
automation ×1
c ×1
cron ×1
interrupt ×1
jruby ×1
jrubyonrails ×1
jvm ×1
linux-kernel ×1
php ×1
posix ×1
process ×1
pthreads ×1
real-time ×1
rtos ×1
scheduler ×1