我console.log
在我的javascript中使用很多来调试鼠标移动事件.我遇到的问题是,当在chrome控制台中时,不会遵循新条目.
在这些屏幕截图中最好地说明了:
第一批日志很好,因为它足够大,可以在屏幕上看到所有日志:
几秒钟后:
日志已超过需要我滚动的窗口大小.
这使调试鼠标移动事件非常困难,因为我必须移动到控制台并向下滚动,从而向日志添加更多条目.
所以我的问题是:如何让chrome基本上拖尾日志而不是停止并要求我滚动.
我正在查看通过ViewPoint gem的所有请求.使用vcr gem.
require 'spec_helper'
require 'vcr'
describe CalendarImporters::Ews::Get do
let(:conf_connection) { FactoryGirl.create(:conf_connection)}
let(:calendar) { create(:calendar, :for_ews) }
let(:connection) { Connections::Ews.new(conf_connection, calendar.ews_email) }
it "works" do
VCR.use_cassette("a/cassette") do
connection.client.get_folder(:calendar)
end
end
end
Run Code Online (Sandbox Code Playgroud)
connection.client
返回一个新ViewPoint
连接.
我从gem返回的响应是:Viewpoint::EWS::Errors::UnauthorizedResponseError
这相当于来自ews api的401未授权代码.
我发现了这个问题:https://github.com/vcr/vcr/issues/297
这是我遇到的完全相同的问题,但它已经3年了,没有解决方案.我所有的其他谷歌foo都没有发现.
深入研究视点宝石,我发现请求对象除了:HTTPClient
和 WebMockHTTPClient
预期之外没有任何区别.
我最近开始与Sidekiq合作,并注意到它有一个很棒的功能,我已经搜索了很长时间:
UserMailer.delay_until(5.days.from_now).find_more_friends_email
Run Code Online (Sandbox Code Playgroud)
基本上我可以在将来安排工作,所以我不需要我的应用程序连续轮询开始时间的新事件.
现在这就像一个魅力,但我如何改变工作的开始时间?通常,某些预定事件的开始时间会更改.我怎么在sidekiq复制这个?
我知道我可以删除作业并创建一个新作业,但是可以只修改开始时间吗?
编辑:
我建立在Oto Brglez的想法之上,这里是文档化的代码:
module TaskStuff
class TaskSetter
include Sidekiq::Worker
sidekiq_options retry: false
def perform(task_id)
task = Task.find(task_id)
# Get the worker that's performing this job
if worker = AppHelpers.find_worker(jid)
# If the worker matches the "at" timestamp then this is the right one and we should execute it
if worker.last["payload"]["at"].to_s.match(/(\d*\.\d{0,3})\d*/)[1] == task.start.to_f.to_s.match(/(\d*\.\d{0,3})\d*/)[1]
task.execute
else
custom_logger.debug("This worker is the wrong one. Skipping...")
end
else
custom_logger.error("We couldn't find the worker")
end
end
end
end
module AppHelpers …
Run Code Online (Sandbox Code Playgroud) 我遇到了 lock_expiration 和 sidekiq 独特作业的问题。
gem 'sidekiq', '4.2.10'
gem 'sidekiq-cron', '1.2.0'
gem 'sidekiq-unique-jobs', '6.0.25'
Run Code Online (Sandbox Code Playgroud)
使用 sidekiq 选项:
gem 'sidekiq', '4.2.10'
gem 'sidekiq-cron', '1.2.0'
gem 'sidekiq-unique-jobs', '6.0.25'
Run Code Online (Sandbox Code Playgroud)
当该工作程序运行时:
[1] pry(main)> HardWorker.perform_async
=> 53b93f122fddbb2ebd350332267484ea
Run Code Online (Sandbox Code Playgroud)
由于执行的是空方法,因此作业完成。锁定发生了,即我在 redis 中看到了这一点:
如果 AVAILABLE key 在 5 秒 TTL 过期之前仍然存在于 redis 中。只要我刷新该 TTL 并且该密钥存在,我就可以将另一项作业加入队列并继续执行此操作。但是,5 秒后,该密钥过期,我无法将另一个作业排入队列,直到 EXISTS 键过期。
我希望 5 秒过去后能够将另一项作业加入队列。我非常确定在作业正确完成后应该删除 EXISTS 键。但这并没有发生。该作业可以排队,但只能在 AVAILABLE 键的 TTL 内。
我正在从非常旧的版本升级 sidekiq。这是我在不升级系统其他主要部分的情况下所能做到的。
我的问题是,这是有意的行为吗?基于我们所做的升级和配置属性的替换。它应该像以前一样工作。即能够在当前作业完成后将作业排队。
假设这是一个错误或预期的行为。我怎样才能得到这种行为?