|
6 | 6 | import pathlib |
7 | 7 | import queue |
8 | 8 | import shutil |
| 9 | +import tempfile |
9 | 10 | from datetime import datetime |
10 | 11 |
|
11 | 12 | from runner.submission import SubmissionRunner |
@@ -372,16 +373,26 @@ def on_submission_complete(self, submission_id: str): |
372 | 373 | assert [*submission_result.keys()] == [*range(len(submission_result))] |
373 | 374 | submission_result = [*submission_result.values()] |
374 | 375 | # post data |
375 | | - submission_data = { |
376 | | - 'tasks': submission_result, |
377 | | - 'token': config.SANDBOX_TOKEN |
378 | | - } |
379 | | - self.release(submission_id) |
380 | | - logger().info(f'send to BE [submission_id={submission_id}]') |
381 | | - resp = requests.put( |
382 | | - f'{config.BACKEND_API}/submission/{submission_id}/complete', |
383 | | - json=submission_data, |
384 | | - ) |
| 376 | + with tempfile.NamedTemporaryFile("w") as tmpf: |
| 377 | + submission_data = { |
| 378 | + 'tasks': submission_result, |
| 379 | + 'token': config.SANDBOX_TOKEN |
| 380 | + } |
| 381 | + # write payload to file |
| 382 | + json.dump(submission_data, tmpf) |
| 383 | + tmpf.flush() |
| 384 | + # release resources |
| 385 | + del submission_data |
| 386 | + self.release(submission_id) |
| 387 | + |
| 388 | + logger().info(f'send to BE [submission_id={submission_id}]') |
| 389 | + # open in binary mode as requests needs a binary stream |
| 390 | + with open(tmpf.name, "rb") as payload: |
| 391 | + resp = requests.put( |
| 392 | + f'{config.BACKEND_API}/submission/{submission_id}/complete', |
| 393 | + data=payload, |
| 394 | + headers={'Content-Type': 'application/json'}, |
| 395 | + ) |
385 | 396 | logger().debug(f'get BE response: [{resp.status_code}] {resp.text}', ) |
386 | 397 | # clear |
387 | 398 | if resp.ok: |
|
0 commit comments