| 653 | """ |
| 654 | |
| 655 | def signature_from_request(self, request=None, args=None, kwargs=None, |
| 656 | queue=None, **extra_options): |
| 657 | request = self.request if request is None else request |
| 658 | args = request.args if args is None else args |
| 659 | kwargs = request.kwargs if kwargs is None else kwargs |
| 660 | options = {**request.as_execution_options(), **extra_options} |
| 661 | delivery_info = request.delivery_info or {} |
| 662 | priority = delivery_info.get('priority') |
| 663 | if priority is not None: |
| 664 | options['priority'] = priority |
| 665 | if queue: |
| 666 | options['queue'] = queue |
| 667 | else: |
| 668 | exchange = delivery_info.get('exchange') |
| 669 | routing_key = delivery_info.get('routing_key') |
| 670 | if exchange == '' and routing_key: |
| 671 | # sent to anon-exchange |
| 672 | options['queue'] = routing_key |
| 673 | else: |
| 674 | options.update(delivery_info) |
| 675 | return self.signature( |
| 676 | args, kwargs, options, type=self, **extra_options |
| 677 | ) |
| 678 | subtask_from_request = signature_from_request # XXX compat |
| 679 | |
| 680 | def retry(self, args=None, kwargs=None, exc=None, throw=True, |