Commit 9b87a93c authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

Clean making periodic task

parent 01c40a7b
......@@ -13,8 +13,9 @@ def add(x, y):
@shared_task
def run_job(job_id):
api = Service()
print('RUN spider')
job = Job.objects.get(pk=job_id)
print('RUN spider', job_id)
job = Job.objects.get(id=job_id)
print(job)
# run job nonstop
if job.status == Job.FINISHED and job.interval == Job.NON:
......
......@@ -60,7 +60,6 @@ class JobListView(ListView):
return JsonResponse(self.service.restart_job(job_id))
if action == 'log':
log = self.service.get_log(job_id)
# return HttpResponse(log, content_type='text/plain')
return FileResponse(log)
......@@ -77,32 +76,16 @@ class NewJobCreateView(CreateView):
spider = Spider.objects.get(pk=request.POST.get('spider'))
query = request.POST.get('query')
job = Job.objects.create(name=name, spider=spider, query=query)
if request.POST.get('date'):
date = self._date_format(request.POST.get('date'))
data = {
'minute': date.minute,
'hour': date.hour,
'day_of_month': date.day,
'month_of_year': date.month
}
job.schedule_job = make_periodic_task(job.id, data)
interval = request.POST.get('interval')
every = request.POST.get('count')
job.schedule_job = make_periodic_task(job.id, schedule(interval, every))
job.save()
if query == 'j':
query = ''
return HttpResponseRedirect(reverse('job_list'))
def _date_format(self, date):
tp = date[-3:]
date = datetime.strptime(date[:-3], "%m/%d/%Y %H:%M")
if 'PM' in tp:
# TODO need make refactor, because here can be bug
if date.hour == 12:
return date
h = date.hour + 12 if date.hour < 12 else 0
return date.replace(hour=h)
return date
@method_decorator(login_required, name='dispatch')
class EditJobView(UpdateView):
......@@ -120,3 +103,25 @@ class EditJobView(UpdateView):
job = Job.objects.filter(pk=request.POST.get('job'))
job.update(name=name, spider=spider, query=query)
return HttpResponseRedirect(reverse('edit_job', kwargs={'id': request.POST.get('job')}))
def schedule(interval, every):
DAY = 'day'
WEEK = 'week'
MONTH = 'month'
scheduler = {
'minute': 0,
'hour': 0,
'day_of_month': '*',
'month_of_year': '*',
'day_of_week': '*'
}
if interval == DAY:
pass
if interval == WEEK:
pass
if interval == MONTH:
pass
return scheduler
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