solo.py 647 B

12345678910111213141516171819202122
  1. import os
  2. from celery.concurrency.base import BasePool, apply_target
  3. class TaskPool(BasePool):
  4. """Solo task pool (blocking, inline)."""
  5. def on_start(self):
  6. self.pid = os.getpid()
  7. def on_apply(self, target, args, kwargs, callback=None,
  8. accept_callback=None, **_):
  9. return apply_target(target, args, kwargs,
  10. callback, accept_callback, self.pid)
  11. def _get_info(self):
  12. return {"max-concurrency": 1,
  13. "processes": [self.pid],
  14. "max-tasks-per-child": None,
  15. "put-guarded-by-semaphore": True,
  16. "timeouts": ()}