Giter Club home page Giter Club logo

Comments (1)

mattbennett avatar mattbennett commented on July 3, 2024

If I understand correctly there are two questions here:

Q1. Is there any way to know how many threads are running?

It depends what you mean. The ServiceContainer._worker_pool is the pool of Greenthreads used to run workers (i.e. the threads used to execute service methods). You can call pool.running() to find out how many workers are currently active. I guess this is the metric you really want to know? If so, there are better ways to track the information, such as a DependencyProvider that increments a counter on worker_setup and decrements it again on worker_teardown.

Nameko uses threads for other things other than running workers too. Most entrypoint implementations rely on a background thread (e.g. the Timer). If these threads are managed by nameko (which they should be, aren't guaranteed to be) you can find them in the ServiceContainer._active_threads and ServiceContainer._protected_threads attributes.

Q2. Can @timer decorated methods know what interval argument they were called with?

Not in the built-in implementation, but it's pretty easy to create a subclass that passes it in:

from nameko.timer import Timer

class AwareTimer(Timer):
    def handle_timer_tick(self):
        args = (self.interval,)
        kwargs = {}
        self.container.spawn_worker(self, args, kwargs)

aware_timer = AwareTimer.decorator
@aware_timer(interval=10)
def testing(self,interval):
  print interval  # works

The timer entrypoint is entirely declarative though, so why don't you do the following?

interval = 10

class Service:
    @timer(interval)
    def testing(self):
        print(interval)

The user group is a better place for these kind of questions. If you have any more, please ask them there.

from nameko.

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.