|
1 | 1 | # -*- coding: utf-8 -*-
|
2 | 2 |
|
3 | 3 | import json
|
| 4 | +import os |
4 | 5 |
|
5 | 6 | import requests
|
6 | 7 | from flask import (Flask, g, make_response, request, send_from_directory,
|
@@ -81,6 +82,25 @@ def _get_config(key, fallback=None):
|
81 | 82 | return g.config.get(key, fallback)
|
82 | 83 |
|
83 | 84 |
|
| 85 | +def _write_status(key_values): |
| 86 | + status = dict() |
| 87 | + fp = '/config/status.json' |
| 88 | + if os.path.exists(fp): |
| 89 | + try: |
| 90 | + with open(fp, 'r') as f: |
| 91 | + status = json.load(f) |
| 92 | + except Exception as e: |
| 93 | + app.logger.critical(str(e)) |
| 94 | + for key, value in key_values.items(): |
| 95 | + status[key] = value |
| 96 | + try: |
| 97 | + with open(fp + '~', 'w') as f: |
| 98 | + f.write(json.dumps(status, indent=4)) |
| 99 | + os.replace(fp + '~', fp) |
| 100 | + except Exception as e: |
| 101 | + app.logger.critical(str(e)) |
| 102 | + |
| 103 | + |
84 | 104 | def _build_headers():
|
85 | 105 | return {
|
86 | 106 | 'Content-Type': 'application/json',
|
@@ -276,6 +296,12 @@ def parts_query():
|
276 | 296 | for error in errors:
|
277 | 297 | app.logger.warning("GraphQL Error: " + str(error))
|
278 | 298 |
|
| 299 | + # Handle quota limit. |
| 300 | + next_access_time = query_json.get('nextAccessTime') |
| 301 | + if (len(data) == 0) and (next_access_time is not None): |
| 302 | + app.logger.warning("Quota limit: " + str(next_access_time)) |
| 303 | + _write_status(dict(next_access_time=next_access_time)) |
| 304 | + |
279 | 305 | # Convert query response data and return it to the client.
|
280 | 306 | tx = dict(parts=[])
|
281 | 307 | for i in range(len(parts)):
|
|
0 commit comments