|
13 | 13 | logger = logging.getLogger(__name__) |
14 | 14 |
|
15 | 15 |
|
16 | | -@shared_task |
17 | | -def retrieve_resource(resource): |
| 16 | +@shared_task(bind=True) |
| 17 | +def retrieve_resource(self, resource): |
18 | 18 | task_id = uuid.uuid4().hex |
19 | 19 | signals.request_started.send(sender=task_id) |
20 | 20 | try: |
21 | 21 | if not resource.retrieve(): |
22 | 22 | t = time.time() - resource.created.timestamp() |
23 | 23 | if t < 3600: |
24 | | - retrieve_resource.apply_async( |
25 | | - args=(resource, ), |
26 | | - eta=now() + timedelta(seconds=30)) |
| 24 | + raise self.retry(exc=None, countdown=30) |
27 | 25 | elif t < 3600 * 12: |
28 | | - retrieve_resource.apply_async( |
29 | | - args=(resource, ), |
30 | | - eta=now() + timedelta(seconds=1800)) |
| 26 | + raise self.retry(exc=None, countdown=1800) |
31 | 27 | else: |
32 | 28 | resource.detach_resource() |
33 | 29 | except Resource.DoesNotExist: |
34 | | - logger.exception("retrieve task not found resource: {}".format(resource.id)) # noqa |
| 30 | + logger.exception( |
| 31 | + "retrieve task not found resource: {}".format(resource.id)) |
35 | 32 | finally: |
36 | 33 | signals.request_finished.send(sender=task_id) |
37 | 34 |
|
38 | 35 |
|
39 | | -@shared_task |
| 36 | +@shared_task( |
| 37 | + autoretry_for=(Exception, ), |
| 38 | + retry_backoff=8, |
| 39 | + retry_jitter=True, |
| 40 | + retry_backoff_max=3600, |
| 41 | + retry_kwargs={'max_retries': None} |
| 42 | +) |
40 | 43 | def measure_config(config: List[Dict[str, str]]): |
41 | 44 | task_id = uuid.uuid4().hex |
42 | 45 | signals.request_started.send(sender=task_id) |
43 | 46 | try: |
44 | 47 | measurement = manager.Measurement() |
45 | 48 | measurement.post_config(config) |
46 | | - except Exception as e: |
47 | | - logger.exception("write influxdb point fail: {}".format(e)) |
48 | 49 | finally: |
49 | 50 | signals.request_finished.send(sender=task_id) |
50 | 51 |
|
51 | 52 |
|
52 | | -@shared_task |
| 53 | +@shared_task( |
| 54 | + autoretry_for=(Exception, ), |
| 55 | + retry_backoff=8, |
| 56 | + retry_jitter=True, |
| 57 | + retry_backoff_max=3600, |
| 58 | + retry_kwargs={'max_retries': None} |
| 59 | +) |
53 | 60 | def measure_volumes(volumes: List[Dict[str, str]]): |
54 | 61 | task_id = uuid.uuid4().hex |
55 | 62 | signals.request_started.send(sender=task_id) |
56 | 63 | try: |
57 | 64 | measurement = manager.Measurement() |
58 | 65 | measurement.post_volumes(volumes) |
59 | | - except Exception as e: |
60 | | - logger.exception("write influxdb point fail: {}".format(e)) |
61 | 66 | finally: |
62 | 67 | signals.request_finished.send(sender=task_id) |
63 | 68 |
|
64 | 69 |
|
65 | | -@shared_task |
| 70 | +@shared_task( |
| 71 | + autoretry_for=(Exception, ), |
| 72 | + retry_backoff=8, |
| 73 | + retry_jitter=True, |
| 74 | + retry_backoff_max=3600, |
| 75 | + retry_kwargs={'max_retries': None} |
| 76 | +) |
66 | 77 | def measure_networks(networks: List[Dict[str, str]]): |
67 | 78 | task_id = uuid.uuid4().hex |
68 | 79 | signals.request_started.send(sender=task_id) |
69 | 80 | try: |
70 | 81 | measurement = manager.Measurement() |
71 | 82 | measurement.post_networks(networks) |
72 | | - except Exception as e: |
73 | | - logger.exception("write influxdb point fail: {}".format(e)) |
74 | 83 | finally: |
75 | 84 | signals.request_finished.send(sender=task_id) |
76 | 85 |
|
77 | 86 |
|
78 | | -@shared_task |
| 87 | +@shared_task( |
| 88 | + autoretry_for=(Exception, ), |
| 89 | + retry_backoff=8, |
| 90 | + retry_jitter=True, |
| 91 | + retry_backoff_max=3600, |
| 92 | + retry_kwargs={'max_retries': None} |
| 93 | +) |
79 | 94 | def measure_instances(instances: List[Dict[str, str]]): |
80 | 95 | task_id = uuid.uuid4().hex |
81 | 96 | signals.request_started.send(sender=task_id) |
82 | 97 | try: |
83 | 98 | measurement = manager.Measurement() |
84 | 99 | measurement.post_instances(instances) |
85 | | - except Exception as e: |
86 | | - logger.exception("write influxdb point fail: {}".format(e)) |
87 | 100 | finally: |
88 | 101 | signals.request_finished.send(sender=task_id) |
89 | 102 |
|
90 | 103 |
|
91 | | -@shared_task |
| 104 | +@shared_task( |
| 105 | + autoretry_for=(Exception, ), |
| 106 | + retry_backoff=8, |
| 107 | + retry_jitter=True, |
| 108 | + retry_backoff_max=3600, |
| 109 | + retry_kwargs={'max_retries': None} |
| 110 | +) |
92 | 111 | def measure_resources(resources: List[Dict[str, str]]): |
93 | 112 | task_id = uuid.uuid4().hex |
94 | 113 | signals.request_started.send(sender=task_id) |
95 | 114 | try: |
96 | 115 | measurement = manager.Measurement() |
97 | 116 | measurement.post_resources(resources) |
98 | | - except Exception as e: |
99 | | - logger.exception("write influxdb point fail: {}".format(e)) |
100 | 117 | finally: |
101 | 118 | signals.request_finished.send(sender=task_id) |
0 commit comments