Return the effective ignore_result, with request overriding task. If req provides an explicit ignore_result, that value is used; otherwise task.ignore_result is returned.
(task, req)
| 155 | |
| 156 | |
| 157 | def get_actual_ignore_result(task, req): |
| 158 | """Return the effective ignore_result, with request overriding task. |
| 159 | |
| 160 | If req provides an explicit ignore_result, that value is used; |
| 161 | otherwise task.ignore_result is returned. |
| 162 | """ |
| 163 | if req is None: |
| 164 | return task.ignore_result |
| 165 | |
| 166 | actual = getattr(req, 'ignore_result', None) |
| 167 | |
| 168 | # Context defines `ignore_result = False` at class level (see Context |
| 169 | # in celery/app/task.py). getattr() above would return the class default |
| 170 | # (False) even when the request never set it explicitly, making it |
| 171 | # impossible to distinguish "override=False" from "not set". We check |
| 172 | # __dict__ to detect only instance-level (i.e., explicitly set) values. |
| 173 | if isinstance(req, Context) and 'ignore_result' not in req.__dict__: |
| 174 | actual = None |
| 175 | |
| 176 | return actual if actual is not None else task.ignore_result |
| 177 | |
| 178 | |
| 179 | class TraceInfo: |
no outgoing calls
no test coverage detected