| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | from celery import current_app, task, uuidfrom celery.worker.consumer import Consumerfrom celery.worker.job import Requestfrom celery.concurrency.solo import TaskPoolfrom celery.app.amqp import TASK_BAREfrom time import timefrom Queue import Queuefrom librabbitmq import Messageimport socketimport sys@task(accept_magic_kwargs=False)def T():    passtid = uuid()P = TaskPool()hostname = socket.gethostname()task = {'task': T.name, 'args': (), 'kwargs': {}, 'id': tid, 'flags': 0}app = current_app._get_current_object()ready_queue = Queue()def on_put(req):    req.execute_using_pool(P)def on_ack(*a): passm = Message(None, {}, {}, task)ready_queue.put = on_putx = Consumer(ready_queue, hostname=hostname, app=app)x.update_strategies()name = T.namets = time()from celery.datastructures import AttributeDictfrom celery.task.trace import trace_task_retrequest = AttributeDict(                {'called_directly': False,                 'callbacks': [],                 'errbacks': [],                 'chord': None}, **task)for i in xrange(100000):    trace_task_ret(T, tid, (), {}, request)print(time() - ts)
 |