GithubHelp home page GithubHelp logo

Comments (6)

lucke84 avatar lucke84 commented on May 26, 2024

Super interested in this topic, and I think @bejmuller is too!

from sidekiq-status.

utgarda avatar utgarda commented on May 26, 2024

Guys, sorry about the docs one more time, you can specify custom expiration globally through server middleware initialization params, just look at this:
https://github.com/utgarda/sidekiq-status/blob/master/lib/sidekiq-status/server_middleware.rb#L11
also, to specify it on per-worker basis, just make sure worker.respond_to?(:expiration) == true and set it there ( see the same file, server middleware ).

from sidekiq-status.

ivanovv avatar ivanovv commented on May 26, 2024

@utgarda I think both ways you suggested are not going to work...
Lets follow the code for the queued job
https://github.com/utgarda/sidekiq-status/blob/master/lib/sidekiq-status/client_middleware.rb#L11
from here

def call(worker_class, msg, queue, redis_pool=nil)
      store_status msg['jid'], :queued, nil, redis_pool
      yield
end

passes explicit nil
store_status passes that nil to store_for_id https://github.com/utgarda/sidekiq-status/blob/master/lib/sidekiq-status/storage.rb#L32
store_for_id uses that nil or constant here https://github.com/utgarda/sidekiq-status/blob/master/lib/sidekiq-status/storage.rb#L18

conn.expire id, (expiration || Sidekiq::Status::DEFAULT_EXPIRY)

If there is no some magic, then the queued job will receive Sidekiq::Status::DEFAULT_EXPIRY

Correct me if I'm wrong.

from sidekiq-status.

utgarda avatar utgarda commented on May 26, 2024

@ivanovv Got your point. I'm on it.

from sidekiq-status.

shyamster avatar shyamster commented on May 26, 2024

@utgarda, did you get a chance to work on this? I'm facing the same issue. Setting expiration does not work either in the worker or via the middleware initialization params

from sidekiq-status.

topherhunt avatar topherhunt commented on May 26, 2024

I believe I'm running into this same issue, can someone confirm that the following is in the same bucket? In my Sidekiq worker I've defined expiration thus:

  def expiration
    @expiration ||= 60 * 60 * 6 # 6 hours
  end

but in the Redis queue I'm seeing indication that status keys are set to expire after 30 minutes:

1433183351.762414 [0 127.0.0.1:49224] "expire" "sidekiq:status:d2347b9afde8c47deeaa70eb" "1800"

I only figured this out after wasting hours looking elsewhere for the problem, since I had set expiration: 6.hours in the ServerMiddleware config but eventually figured out that Sidekiq-Status wasn't respecting this option.

Update: I worked around this issue with the following monkeypatch in config/initializers/sidekiq-status.rb:

module Sidekiq::Status
  remove_const :DEFAULT_EXPIRY
  DEFAULT_EXPIRY = 60 * 60 * 6 # 6 hours
end

from sidekiq-status.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.