Пример #1
0
 def __call__(self):
     mc_pos = self.extra_kwargs.get('meta_pos', 0)
     self._fix_mc_pos(self.first_body, mc_pos)
     self._all_chunks.extend(self.first_body)
     yield self.first_body
     if 'version' not in self.extra_kwargs:
         self.extra_kwargs['version'] = self.obj_meta['version']
     while True:
         mc_pos += 1
         # If we are here, we know that the client is still
         # listening (he is uploading data). It seems a good idea to
         # postpone the deadline.
         set_deadline_from_read_timeout(self.extra_kwargs, force=True)
         meta, next_body = self.container_client.content_prepare(
             self.account,
             self.container,
             self.obj_name,
             position=mc_pos,
             size=1,
             stgpol=self.policy,
             **self.extra_kwargs)
         self.obj_meta['properties'].update(meta.get('properties', {}))
         self._fix_mc_pos(next_body, mc_pos)
         self._all_chunks.extend(next_body)
         yield next_body
Пример #2
0
    def test_deadline_from_read_timeout(self):
        kwargs = dict()
        set_deadline_from_read_timeout(kwargs)
        # nothing changed
        self.assertFalse(kwargs)

        now = monotonic_time()
        kwargs['read_timeout'] = 10.0
        set_deadline_from_read_timeout(kwargs)
        # deadline is computed from read timeout
        self.assertIn('deadline', kwargs)
        self.assertLessEqual(kwargs['deadline'],
                             now + kwargs['read_timeout'] + 0.1)

        prev_deadline = kwargs['deadline']
        set_deadline_from_read_timeout(kwargs)
        # deadline is not recomputed
        self.assertIn('deadline', kwargs)
        self.assertEqual(prev_deadline, kwargs['deadline'])

        prev_deadline = kwargs['read_timeout']
        set_deadline_from_read_timeout(kwargs, force=True)
        # deadline is recomputed
        self.assertIn('deadline', kwargs)
        self.assertNotEqual(prev_deadline, kwargs['deadline'])
Пример #3
0
 def _patch_kwargs(self, *args, **kwargs):
     for argk, argv in self._global_kwargs.items():
         if argk not in kwargs:
             kwargs[argk] = argv
     set_deadline_from_read_timeout(kwargs)
     return fnc(self, *args, **kwargs)