def on_task_call(self, producer, task_id): # Called every time a task is sent when using this backend. # We declare the queue we receive replies on in advance of sending # the message, but we skip this if running in the prefork pool # (task_join_will_block), as we know the queue is already declared. if not task_join_will_block(): maybe_declare(self.binding(producer.channel), retry=True)
def denied_join_result(): reset_value = task_join_will_block() _set_task_join_will_block(True) try: yield finally: _set_task_join_will_block(reset_value)
def allow_join_result(): reset_value = task_join_will_block() _set_task_join_will_block(False) try: yield finally: _set_task_join_will_block(reset_value)
def test_task_join_will_block(self): prev, _state._task_join_will_block = _state._task_join_will_block, 0 try: self.assertEqual(_state._task_join_will_block, 0) _state._set_task_join_will_block(True) print(_state.task_join_will_block) self.assertTrue(_state.task_join_will_block()) finally: _state._task_join_will_block = prev
def on_task_call(self, producer, task_id): if not task_join_will_block(): self.result_consumer.consume_from(task_id)
def on_task_call(self, producer, task_id): if not task_join_will_block(): maybe_declare(self.binding(producer.channel), retry=True)
def assert_will_not_block(): if task_join_will_block(): raise RuntimeError(E_WOULDBLOCK)