Commit 3dd19195 authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

Add functional for run Job

parent 0326e582
......@@ -59,7 +59,7 @@ class Job(models.Model):
)
name = models.CharField(max_length=50, default=None, null=True)
job_id = models.CharField(max_length=50, default=None, null=True)
job_uuid = models.CharField(max_length=50, default=None, null=True)
create_time = models.DateTimeField(default=datetime.now)
start_time = models.DateTimeField(default=None, null=True)
end_time = models.DateTimeField(default=None, null=True)
......
from datetime import datetime
from scrapyd_api import ScrapydAPI
from .models import Spider, Job
class Service:
def update_jobs_status(self, jobs):
def __init__(self):
self.api = ScrapydAPI()
def update_jobs_status(self):
try:
jobs = self.api.list_jobs('exa')
finished = jobs.get('finished')
if finished:
for i in finished:
Job.objects.get(job_id=i['id']).update(status='FIN', end_time=i['end_time'])
Job.objects.get(job_uuid=i['id']).update(status='FIN', end_time=i['end_time'])
running = jobs.get('running')
if running:
for i in running:
Job.objects.get(job_id=i['id']).update(status='RUN')
Job.objects.get(job_uuid=i['id']).update(status='RUN')
except:
pass
def run_job(self, job):
job = Job.objects.get(pk=job)
print(job.spider.sp_name)
uuid = self.api.schedule('exa', job.spider.sp_name)
job.job_uuid = uuid
job.start_time = datetime.now()
job.status = 'RUN'
job.save()
print("job is running")
from django.shortcuts import render, HttpResponseRedirect, reverse, HttpResponse
from django.views.generic import ListView, CreateView
from scrapyd_api import ScrapydAPI
from .models import Spider, Job
from .service import Service
......@@ -11,7 +10,6 @@ class JobListView(ListView):
model = Job
def __init__(self):
self.client = ScrapydAPI()
self.service = Service()
super(JobListView, self).__init__()
......@@ -28,13 +26,11 @@ class JobListView(ListView):
action = request.POST.get('action')
job_id = request.POST.get('job_id')
if action == 'run':
print(job_id)
# job = Job.objects.get(pk=job_id)
self.service.run_job(job_id)
if action == 'cancel':
pass
if action == 'update':
jobs = self.client.list_jobs('exa')
self.service.update_jobs_status(jobs)
self.service.update_jobs_status()
if action == 'new':
return HttpResponseRedirect(reverse('new_job'))
......@@ -44,10 +40,6 @@ class JobListView(ListView):
class NewJobCreateView(CreateView):
template_name = 'new_job.html'
def __init__(self):
self.client = ScrapydAPI()
super(NewJobCreateView, self).__init__()
def get(self, request, *args, **kwargs):
spiders = Spider.objects.all()
return render(request, self.template_name, {'spiders': spiders})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment