Mudanza de repo
This commit is contained in:
213
api/customs/tasks/microservice.py
Normal file
213
api/customs/tasks/microservice.py
Normal file
@@ -0,0 +1,213 @@
|
||||
|
||||
from celery import shared_task, group
|
||||
from api.customs.models import ProcesamientoPedimento
|
||||
import requests
|
||||
from config.settings import SERVICE_API_URL
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
# ===================
|
||||
# Pedimento Completo
|
||||
# ===================
|
||||
@shared_task
|
||||
def procesar_pedimento_completo_individual(pedimento_id, organizacion_id):
|
||||
response = requests.post(
|
||||
f"{SERVICE_API_URL}/async/services/pedimento_completo",
|
||||
json={"pedimento": str(pedimento_id), "organizacion": str(organizacion_id)}
|
||||
)
|
||||
if response.status_code == 200:
|
||||
print(f"Pedimento {pedimento_id} procesado correctamente.")
|
||||
else:
|
||||
print(f"Error al procesar el pedimento {pedimento_id}: {response.status_code} - {response.text}")
|
||||
print(f"Disparando evento para procesamiento {pedimento_id}")
|
||||
|
||||
@shared_task
|
||||
def ejecutar_pedimento_completo():
|
||||
pendientes = ProcesamientoPedimento.objects.filter(estado=1, servicio=3)
|
||||
batch_size = 20
|
||||
ids = list(pendientes.values_list('pedimento_id', 'organizacion_id'))
|
||||
for i in range(0, len(ids), batch_size):
|
||||
batch = ids[i:i+batch_size]
|
||||
job = group(procesar_pedimento_completo_individual.s(ped_id, org_id) for ped_id, org_id in batch)
|
||||
job.apply_async()
|
||||
# Validar horario permitido (5:00 a 22:00)
|
||||
ahora = datetime.now().time()
|
||||
if (ahora < datetime.strptime('05:00', '%H:%M').time()) or (ahora >= datetime.strptime('22:00', '%H:%M').time()):
|
||||
print('ejecutar_pedimento_completo: fuera de horario permitido (5:00-22:00). Abortando.')
|
||||
return
|
||||
|
||||
# ===================
|
||||
# Partidas
|
||||
# ===================
|
||||
@shared_task
|
||||
def procesar_partida_individual(pedimento_id, organizacion_id):
|
||||
response = requests.post(
|
||||
f"{SERVICE_API_URL}/async/services/partidas",
|
||||
json={"pedimento": str(pedimento_id), "organizacion": str(organizacion_id)}
|
||||
)
|
||||
if response.status_code == 200:
|
||||
print(f"Partidas del pedimento {pedimento_id} procesadas correctamente.")
|
||||
else:
|
||||
print(f"Error al procesar partidas del pedimento {pedimento_id}: {response.status_code} - {response.text}")
|
||||
print(f"Disparando evento para procesamiento {pedimento_id}")
|
||||
|
||||
@shared_task
|
||||
def ejecutar_partidas_pedimento():
|
||||
pendientes = ProcesamientoPedimento.objects.filter(estado=1, servicio=4)
|
||||
batch_size = 20
|
||||
ids = list(pendientes.values_list('pedimento_id', 'organizacion_id'))
|
||||
for i in range(0, len(ids), batch_size):
|
||||
batch = ids[i:i+batch_size]
|
||||
job = group(procesar_partida_individual.s(ped_id, org_id) for ped_id, org_id in batch)
|
||||
job.apply_async()
|
||||
# Validar horario permitido (5:00 a 22:00)
|
||||
ahora = datetime.now().time()
|
||||
if (ahora < datetime.strptime('05:00', '%H:%M').time()) or (ahora >= datetime.strptime('22:00', '%H:%M').time()):
|
||||
print('ejecutar_partidas_pedimento: fuera de horario permitido (5:00-22:00). Abortando.')
|
||||
return
|
||||
|
||||
# ===================
|
||||
# Remesas
|
||||
# ===================
|
||||
@shared_task
|
||||
def procesar_remesa_individual(pedimento_id, organizacion_id):
|
||||
response = requests.post(
|
||||
f"{SERVICE_API_URL}/async/services/remesas",
|
||||
json={"pedimento": str(pedimento_id), "organizacion": str(organizacion_id)}
|
||||
)
|
||||
if response.status_code == 200:
|
||||
print(f"Remesas del pedimento {pedimento_id} procesadas correctamente.")
|
||||
else:
|
||||
print(f"Error al procesar remesas del pedimento {pedimento_id}: {response.status_code} - {response.text}")
|
||||
print(f"Disparando evento para procesamiento {pedimento_id}")
|
||||
|
||||
@shared_task
|
||||
def ejecutar_remesas():
|
||||
pendientes = ProcesamientoPedimento.objects.filter(estado=1, servicio=5)
|
||||
batch_size = 20
|
||||
ids = list(pendientes.values_list('pedimento_id', 'organizacion_id'))
|
||||
for i in range(0, len(ids), batch_size):
|
||||
batch = ids[i:i+batch_size]
|
||||
job = group(procesar_remesa_individual.s(ped_id, org_id) for ped_id, org_id in batch)
|
||||
job.apply_async()
|
||||
# Validar horario permitido (5:00 a 22:00)
|
||||
ahora = datetime.now().time()
|
||||
if (ahora < datetime.strptime('05:00', '%H:%M').time()) or (ahora >= datetime.strptime('22:00', '%H:%M').time()):
|
||||
print('ejecutar_remesas: fuera de horario permitido (5:00-22:00). Abortando.')
|
||||
return
|
||||
|
||||
# ===================
|
||||
# Acuses
|
||||
# ===================
|
||||
@shared_task
|
||||
def procesar_acuse_individual(pedimento_id, organizacion_id):
|
||||
response = requests.post(
|
||||
f"{SERVICE_API_URL}/async/services/acuse",
|
||||
json={"pedimento": str(pedimento_id), "organizacion": str(organizacion_id)}
|
||||
)
|
||||
if response.status_code == 200:
|
||||
print(f"Acuses del pedimento {pedimento_id} procesadas correctamente.")
|
||||
else:
|
||||
print(f"Error al procesar Acuses del pedimento {pedimento_id}: {response.status_code} - {response.text}")
|
||||
print(f"Disparando evento para procesamiento {pedimento_id}")
|
||||
|
||||
@shared_task
|
||||
def ejecutar_acuse():
|
||||
pendientes = ProcesamientoPedimento.objects.filter(estado=1, servicio=6)
|
||||
batch_size = 20
|
||||
ids = list(pendientes.values_list('pedimento_id', 'organizacion_id'))
|
||||
for i in range(0, len(ids), batch_size):
|
||||
batch = ids[i:i+batch_size]
|
||||
job = group(procesar_acuse_individual.s(ped_id, org_id) for ped_id, org_id in batch)
|
||||
job.apply_async()
|
||||
# Validar horario permitido (5:00 a 22:00)
|
||||
ahora = datetime.now().time()
|
||||
if (ahora < datetime.strptime('05:00', '%H:%M').time()) or (ahora >= datetime.strptime('22:00', '%H:%M').time()):
|
||||
print('ejecutar_acuse: fuera de horario permitido (5:00-22:00). Abortando.')
|
||||
return
|
||||
|
||||
# ===================
|
||||
# Edocuments
|
||||
# ===================
|
||||
@shared_task
|
||||
def procesar_edoc_individual(pedimento_id, organizacion_id):
|
||||
response = requests.post(
|
||||
f"{SERVICE_API_URL}/async/services/edocument",
|
||||
json={"pedimento": str(pedimento_id), "organizacion": str(organizacion_id)}
|
||||
)
|
||||
if response.status_code == 200:
|
||||
print(f"Edocuments del pedimento {pedimento_id} procesadas correctamente.")
|
||||
else:
|
||||
print(f"Error al procesar Edocuments del pedimento {pedimento_id}: {response.status_code} - {response.text}")
|
||||
print(f"Disparando evento para procesamiento {pedimento_id}")
|
||||
|
||||
@shared_task
|
||||
def ejecutar_edocs():
|
||||
pendientes = ProcesamientoPedimento.objects.filter(estado=1, servicio=7)
|
||||
batch_size = 20
|
||||
ids = list(pendientes.values_list('pedimento_id', 'organizacion_id'))
|
||||
for i in range(0, len(ids), batch_size):
|
||||
batch = ids[i:i+batch_size]
|
||||
job = group(procesar_edoc_individual.s(ped_id, org_id) for ped_id, org_id in batch)
|
||||
job.apply_async()
|
||||
|
||||
# ===================
|
||||
# Coves
|
||||
# ===================
|
||||
@shared_task
|
||||
def procesar_cove_individual(pedimento_id, organizacion_id):
|
||||
response = requests.post(
|
||||
f"{SERVICE_API_URL}/async/services/coves",
|
||||
json={"pedimento": str(pedimento_id), "organizacion": str(organizacion_id)}
|
||||
)
|
||||
if response.status_code == 200:
|
||||
print(f"Coves del pedimento {pedimento_id} procesadas correctamente.")
|
||||
else:
|
||||
print(f"Error al procesar Coves del pedimento {pedimento_id}: {response.status_code} - {response.text}")
|
||||
print(f"Disparando evento para procesamiento {pedimento_id}")
|
||||
|
||||
@shared_task
|
||||
def ejecutar_coves():
|
||||
pendientes = ProcesamientoPedimento.objects.filter(estado=1, servicio=8)
|
||||
batch_size = 20
|
||||
ids = list(pendientes.values_list('pedimento_id', 'organizacion_id'))
|
||||
for i in range(0, len(ids), batch_size):
|
||||
batch = ids[i:i+batch_size]
|
||||
job = group(procesar_cove_individual.s(ped_id, org_id) for ped_id, org_id in batch)
|
||||
job.apply_async()
|
||||
# Validar horario permitido (5:00 a 22:00)
|
||||
ahora = datetime.now().time()
|
||||
if (ahora < datetime.strptime('05:00', '%H:%M').time()) or (ahora >= datetime.strptime('22:00', '%H:%M').time()):
|
||||
print('ejecutar_coves: fuera de horario permitido (5:00-22:00). Abortando.')
|
||||
return
|
||||
|
||||
# ===================
|
||||
# Acuse Cove
|
||||
# ===================
|
||||
@shared_task
|
||||
def procesar_acuse_cove_individual(pedimento_id, organizacion_id):
|
||||
response = requests.post(
|
||||
f"{SERVICE_API_URL}/async/services/acuse-cove",
|
||||
json={"pedimento": str(pedimento_id), "organizacion": str(organizacion_id)}
|
||||
)
|
||||
if response.status_code == 200:
|
||||
print(f"Coves del pedimento {pedimento_id} procesadas correctamente.")
|
||||
else:
|
||||
print(f"Error al procesar Coves del pedimento {pedimento_id}: {response.status_code} - {response.text}")
|
||||
print(f"Disparando evento para procesamiento {pedimento_id}")
|
||||
|
||||
@shared_task
|
||||
def ejecutar_acuseCoves():
|
||||
pendientes = ProcesamientoPedimento.objects.filter(estado=1, servicio=9)
|
||||
batch_size = 20
|
||||
ids = list(pendientes.values_list('pedimento_id', 'organizacion_id'))
|
||||
for i in range(0, len(ids), batch_size):
|
||||
batch = ids[i:i+batch_size]
|
||||
job = group(procesar_acuse_cove_individual.s(ped_id, org_id) for ped_id, org_id in batch)
|
||||
job.apply_async()
|
||||
# Validar horario permitido (5:00 a 22:00)
|
||||
ahora = datetime.now().time()
|
||||
if (ahora < datetime.strptime('05:00', '%H:%M').time()) or (ahora >= datetime.strptime('22:00', '%H:%M').time()):
|
||||
print('ejecutar_acuseCoves: fuera de horario permitido (5:00-22:00). Abortando.')
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user