105 lines
4.5 KiB
Python
105 lines
4.5 KiB
Python
|
import socket
|
||
|
import time
|
||
|
import boto3
|
||
|
import subprocess
|
||
|
import json
|
||
|
import threading
|
||
|
from django.core.management.base import BaseCommand
|
||
|
from django.core.management import call_command
|
||
|
from mnfapp.models import ScriptTranslations
|
||
|
from MNF.settings import BasePath
|
||
|
from conversion.translation.external_conversion import Conversion
|
||
|
basePath = BasePath()
|
||
|
|
||
|
|
||
|
def background_execution(obj):
|
||
|
obj.convert()
|
||
|
|
||
|
|
||
|
class Command(BaseCommand):
|
||
|
help = 'Custom Command to start django server and then start dequeuing from SQS'
|
||
|
|
||
|
def handle(self, *args, **options):
|
||
|
# Call the original runserver command"
|
||
|
# call_command('runserver', '0.0.0.0:4549')
|
||
|
command = 'python manage.py runserver 0.0.0.0:4549 > /home/ubuntu/Conversion_Kitchen_Code/logfile.log 2>&1'
|
||
|
|
||
|
# # Execute the command using subprocess.Popen
|
||
|
subprocess.Popen(command, shell=True)
|
||
|
|
||
|
# Wait for the server to start
|
||
|
while True:
|
||
|
try:
|
||
|
# Try to connect to the server
|
||
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
||
|
s.connect(('0.0.0.0', 4549))
|
||
|
break
|
||
|
except ConnectionRefusedError:
|
||
|
# If connection is refused, wait and try again
|
||
|
time.sleep(1)
|
||
|
|
||
|
# Once the server is up, run your function
|
||
|
self.run_after_server_startup()
|
||
|
|
||
|
def run_after_server_startup(self):
|
||
|
# Your function to run after the server starts
|
||
|
print("Development server is fully up and running! Run your function here.")
|
||
|
|
||
|
session = boto3.Session(
|
||
|
aws_access_key_id='AKIAQVLBBGCB45RMLKVW', # replace with your key
|
||
|
aws_secret_access_key='ZWc6KOc5LuBLuCEBDDfQTor+Q7rp3fFH74gVt+AA', # replace with your key
|
||
|
)
|
||
|
sqs = session.resource('sqs', region_name='ap-south-1')
|
||
|
|
||
|
print("Started Executin this from conversion")
|
||
|
queue = sqs.get_queue_by_name(QueueName="mnfqueue")
|
||
|
# try:
|
||
|
messages = queue.receive_messages(
|
||
|
MessageAttributeNames=["All"],
|
||
|
MaxNumberOfMessages=5,
|
||
|
WaitTimeSeconds=20,
|
||
|
)
|
||
|
# msg = messages[0]
|
||
|
for msg in messages:
|
||
|
try:
|
||
|
print("Received message: %s: %s", msg.message_id, msg.body)
|
||
|
print(type(msg.body))
|
||
|
body_dict = json.loads(msg.body)
|
||
|
translated_script = ScriptTranslations.objects.get(translation_id=body_dict["translation_id"])
|
||
|
object_key = "INPUT/" + (translated_script.script_link_id.script.name.split("/"))[-1]
|
||
|
local_file_path = "/home/ubuntu/Conversion_Kitchen_Code/kitchen_counter/media/" + translated_script.script_link_id.script.name
|
||
|
s3_client = boto3.client('s3',
|
||
|
aws_access_key_id="AKIAQVLBBGCB45RMLKVW",
|
||
|
aws_secret_access_key="ZWc6KOc5LuBLuCEBDDfQTor+Q7rp3fFH74gVt+AA",
|
||
|
region_name="ap-south-1"
|
||
|
)
|
||
|
s3_client.download_file("conversion-kitchen", object_key, local_file_path)
|
||
|
|
||
|
|
||
|
conversion_params = {
|
||
|
"user": translated_script.user_id,
|
||
|
"file_path": str(basePath) + "/media/" + translated_script.script_link_id.script.name,
|
||
|
"original_script_id": translated_script.script_link_id.script_id,
|
||
|
"translated_script_id": translated_script.translation_id,
|
||
|
"sample_id": body_dict.get('sample_id', None),
|
||
|
"existing_script": body_dict.get('sample_id', None),
|
||
|
"iteration_no": body_dict.get('iteration_no', None),
|
||
|
"juggernaut_pages_deduction": body_dict.get("juggernaut_pages_deduction", None),
|
||
|
"language_set": body_dict.get("language_set", None),
|
||
|
"amount_without_subscrption": body_dict.get("amount_without_subscrption", None)
|
||
|
}
|
||
|
print("reached here")
|
||
|
obj = Conversion(**conversion_params)
|
||
|
# obj.convert()
|
||
|
background_thread = threading.Thread(target=background_execution, args=(obj,))
|
||
|
background_thread.start()
|
||
|
background_thread.join()
|
||
|
msg.delete()
|
||
|
# return JsonResponse({"sattus":"process started"})
|
||
|
|
||
|
except Exception as error:
|
||
|
print("error execution from queue: %s", error)
|
||
|
|
||
|
|
||
|
print("Completed All Execution")
|