草庐IT

php - Zend Server Job 前身失败依赖

coder 2024-04-20 原文

我使用 Zend Server Jobs 并设置最大并发作业数 = 4,需要此设置 - 许多高优先级作业需要尽快处理。

我还有低优先级的作业,执行时间长 5-7 分钟 - 繁重的数据库操作 - 我希望这个作业一次运行一个 - 如果并行运行会竞争数据库资源和超时。我有创建它们的循环(大约 30 个工作),我正在使用 getJobsList() 检查队列中是否存在具有适当名称的工作,获取最大的工作 ID 并设置为下一个工作的前身。然而,即使作业已经创建(第二次迭代)也不会被 getJobsList() 拾取,并且后续迭代不会拾取最大/最新的作业 ID...

在创建工作时是否涉及延迟? createHttpJob() 和以下 getJobsList() 不返回最近创建的...

在设置了前置任务并且前置任务失败后——比如超时——它会自动让依赖失败。

这是一种设置前任只完成而不管状态的方法吗 - 只是不在队列中或已经在运行?

最佳答案

我正在尝试找出你的问题,这让我遇到了一个问题,我在一段时间前解决了这个问题,我在这里分享我的问题/解决方案,这样你就可以从你的问题中找到一些出路,假设你能够通过它的一些提示更好地解决您的问题。

我有一个相当简单的问题,我有一个必须发布的消息表(以便它们的状态从待处理更新为已发送或错误)。现在运行单个 JOB 并执行所有这些发送会产生问题,因此我必须生成多个实例,这是我通过 crontab 完成的,每 5 秒启动一次(为此我必须编写 sleep 逻辑,因为 cron 默认情况下仅每分钟启动一次)。现在,每个作业都计划以 5 秒的间隔开始,并具有特定的 JOB-WORKER-ID,该 ID 作为参数手动分配给脚本,因为我想要每个作业的 ID,所以同时没有重复的 JOB-WORKER-身份有效。

为此,我保留了一个像 JOB_LOG 这样的表,它记录所有作业并存储它的开始时间、结束时间和每个作业执行期间发送的消息数。现在每次我开始新的工作时,我都会检查是否有相同的 JOB-WORKER-ID 正在运行?通过向 JOB_LOG 表触发以下查询。

SELECT end_time FROM JOB_LOG WHERE job_worker_id = <N> ORDER BY JOB_LOG_ID DESC

如果未指定 end_time,则表示 JOB 仍在运行,否则可以安全地启动新 JOB。 :-)

表格的表格结构类似于以下内容:

job_log
 - job_log_id
 - start_time
 - end_time
 - message_sent_count
 - job_worker_id

我知道我的回答并不能完全解决你的问题,但我看到有一些相似之处,你可以从中找到一些线索。

祝你好运。

关于php - Zend Server Job 前身失败依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638596/

有关php - Zend Server Job 前身失败依赖的更多相关文章

  1. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  2. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  3. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  4. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  5. ruby - 正则表达式在哪个位置失败? - 2

    我需要一个非常简单的字符串验证器来显示第一个符号与所需格式不对应的位置。我想使用正则表达式,但在这种情况下,我必须找到与表达式相对应的字符串停止的位置,但我找不到可以做到这一点的方法。(这一定是一种相当简单的方法……也许没有?)例如,如果我有正则表达式:/^Q+E+R+$/带字符串:"QQQQEEE2ER"期望的结果应该是7 最佳答案 一个想法:你可以做的是标记你的模式并用可选的嵌套捕获组编写它:^(Q+(E+(R+($)?)?)?)?然后你只需要计算你获得的捕获组的数量就可以知道正则表达式引擎在模式中停止的位置,你可以确定匹配结束

  6. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  7. ruby-on-rails - Ruby 的 'open_uri' 是否在读取或失败后可靠地关闭套接字? - 2

    一段时间以来,我一直在使用open_uri下拉ftp路径作为数据源,但突然发现我几乎连续不断地收到“530抱歉,允许的最大客户端数(95)已经连接。”我不确定我的代码是否有问题,或者是否是其他人在访问服务器,不幸的是,我无法真正确定谁有问题。本质上,我正在读取FTPURI:defself.read_uri(uri)beginuri=open(uri).readuri=="Error"?nil:urirescueOpenURI::HTTPErrornilendend我猜我需要在这里添加一些额外的错误处理代码...我想确保我采取一切预防措施来关闭所有连接,这样我的连接就不是问题所在,但是我

  8. ruby-on-rails - Ruby 流量控制 : throw an exception, 返回 nil 还是让它失败? - 2

    我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id

  9. ruby - gem 规范失败 - 2

    我正在为毕业设计开发GEM,TravisCI构建不断失败。这是我在Travis上的链接:https://travis-ci.org/ricardobond/perpetuus/builds/8709218构建错误是:$bundleexecrakerakeaborted!Don'tknowhowtobuildtask'default'/home/travis/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in`eval'/home/travis/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_

  10. ruby - 有什么方法可以告诉 sidekiq 一项工作依赖于另一项工作 - 2

    有什么方法可以告诉sidekiq一项工作依赖于另一项工作,并且在后者完成之前无法开始? 最佳答案 仅使用Sidekiq;答案是否定的。正如DickieBoy所建议的那样,您应该能够在依赖作业完成时将其启动。像这样。#app/workers/hard_worker.rbclassHardWorkerincludeSidekiq::Workerdefperform()puts'Doinghardwork'LazyWorker.perform_async()endend#app/workers/lazy_worker.rbclassLaz

随机推荐