This commit is contained in:
Egor Matveev 2022-03-13 16:12:41 +03:00
parent a47563d7c1
commit 2ee9f1ea3b

View File

@ -3,6 +3,7 @@ from shutil import rmtree
import pika
from django.core.management.base import BaseCommand
from pika.adapters.utils.connection_workflow import AMQPConnectionWorkflowFailed
from Main.models import Solution
from Sprint import settings
@ -14,26 +15,30 @@ class Command(BaseCommand):
def handle(self, *args, **options):
print("Enter worker")
connection = pika.BlockingConnection(
pika.ConnectionParameters(host=settings.RABBIT_HOST)
)
channel = connection.channel()
channel.queue_declare(queue="test")
def callback(ch, method, properties, body):
id = int(str(body, encoding="utf-8"))
print(f"Received id {id}")
solution = Solution.objects.get(id=id)
while True:
try:
eval(solution.language.work_name + "Tester")(solution).execute()
except Exception as e:
print(e)
solution.result = "TE"
solution.save()
finally:
path = join("solutions", str(id))
if exists(path):
rmtree(path)
connection = pika.BlockingConnection(
pika.ConnectionParameters(host=settings.RABBIT_HOST)
)
channel = connection.channel()
channel.queue_declare(queue="test")
channel.basic_consume(queue="test", on_message_callback=callback, auto_ack=True)
channel.start_consuming()
def callback(ch, method, properties, body):
id = int(str(body, encoding="utf-8"))
print(f"Received id {id}")
solution = Solution.objects.get(id=id)
try:
eval(solution.language.work_name + "Tester")(solution).execute()
except Exception as e:
print(e)
solution.result = "TE"
solution.save()
finally:
path = join("solutions", str(id))
if exists(path):
rmtree(path)
channel.basic_consume(queue="test", on_message_callback=callback, auto_ack=True)
channel.start_consuming()
except AMQPConnectionWorkflowFailed:
print("connection to rabbit failed: reconnecting")