Example #1
0
    def _get_operation_postponed_body(exception):
        report = exception.call_report
        if isinstance(exception.call_report, AsyncResult):
            report = TaskResult.from_async_result(exception.call_report)
        serialized_call_report = report.serialize()
        for task in serialized_call_report['spawned_tasks']:
            href_obj = dispatch.task_result_href(task)
            task.update(href_obj)

        return json.dumps(serialized_call_report, default=json_util.default)
Example #2
0
def _get_operation_postponed_body(exception):
    report = exception.call_report
    if isinstance(exception.call_report, AsyncResult):
        report = TaskResult.from_async_result(exception.call_report)
    serialized_call_report = report.serialize()
    for task in serialized_call_report['spawned_tasks']:
        href_obj = serialization.dispatch.task_result_href(task)
        task.update(href_obj)

    return json.dumps(serialized_call_report, default=json_util.default)
Example #3
0
    def _get_operation_postponed_body(exception):
        report = exception.call_report
        if isinstance(exception.call_report, AsyncResult):
            report = TaskResult.from_async_result(exception.call_report)
        serialized_call_report = report.serialize()
        for task in serialized_call_report['spawned_tasks']:
            href_obj = dispatch.task_result_href(task)
            task.update(href_obj)

        # Use the object's serializer if it is a Mongoengine Document.
        result = serialized_call_report.get('result')
        if hasattr(result, 'serializer'):
            serialized_call_report['result'] = result.serializer(result).data

        return json.dumps(serialized_call_report, default=json_util.default)
Example #4
0
    def _get_operation_postponed_body(exception):
        report = exception.call_report
        if isinstance(exception.call_report, AsyncResult):
            report = TaskResult.from_async_result(exception.call_report)
        serialized_call_report = report.serialize()
        if 'spawned_tasks' in serialized_call_report:
            for task in serialized_call_report['spawned_tasks']:
                href_obj = dispatch.task_result_href(task)
                task.update(href_obj)

        # Use the object's serializer if it is a Mongoengine Document.
        result = serialized_call_report.get('result')
        if hasattr(result, 'serializer'):
            serialized_call_report['result'] = result.serializer(result).data

        return json.dumps(serialized_call_report, default=json_util.default)
Example #5
0
    def __call__(self, environ, start_response):

        try:
            return self.app(environ, start_response)

        except OperationPostponed, e:
            report = e.call_report
            if isinstance(e.call_report, AsyncResult):
                report = TaskResult.from_async_result(e.call_report)
            serialized_call_report = report.serialize()
            for task in serialized_call_report['spawned_tasks']:
                href_obj = serialization.dispatch.task_result_href(task)
                task.update(href_obj)

            body = json.dumps(serialized_call_report, default=json_util.default)

            self.headers['Content-Length'] = str(len(body))
            start_str = '%d %s' % (e.http_status_code, http_responses[e.http_status_code])

            start_response(start_str, [(k, v) for k, v in self.headers.items()])
            return [body]