mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
优化计划任务运行模式
This commit is contained in:
@@ -67,44 +67,51 @@ class TaskJobAdmin(ImportExportModelAdmin): # instead of ModelAdmin
|
||||
list_editable = ('task_exec',)
|
||||
|
||||
def save_model(self, request, obj: TaskJob, form, change):
|
||||
obj.save()
|
||||
|
||||
try:
|
||||
# 从字符串获取function
|
||||
func = getattr(tasks, obj.task.name)
|
||||
exist_job = tasks.scheduler.get_job(obj.job_id)
|
||||
|
||||
new_job = None
|
||||
if obj.trigger == Trigger.cron:
|
||||
new_job = tasks.scheduler.add_job(func,
|
||||
trigger=CronTrigger.from_crontab(obj.expression_time),
|
||||
id=obj.job_id,
|
||||
replace_existing=obj.replace_existing,
|
||||
misfire_grace_time=obj.misfire_grace_time,
|
||||
jitter=obj.jitter, )
|
||||
if obj.trigger == Trigger.interval:
|
||||
time_delta = 1
|
||||
time_str = obj.expression_time.split('*')
|
||||
for i in time_str:
|
||||
time_delta *= int(i)
|
||||
new_job = tasks.scheduler.add_job(func,
|
||||
trigger=obj.trigger,
|
||||
id=obj.job_id,
|
||||
seconds=time_delta,
|
||||
replace_existing=obj.replace_existing,
|
||||
misfire_grace_time=obj.misfire_grace_time,
|
||||
jitter=obj.jitter, )
|
||||
if not obj.task_exec:
|
||||
"""如果任务未启用,入库后保持暂停"""
|
||||
new_job.pause()
|
||||
print(new_job.pending)
|
||||
pt_spider.send_text('计划任务:' + new_job.id + (' 添加成功!' if not exist_job else '更新成功!'))
|
||||
messages.add_message(request, messages.SUCCESS, new_job.id + (' 添加成功!' if not exist_job else '更新成功!'))
|
||||
except Exception as e:
|
||||
obj.task_exec = False
|
||||
# 从字符串获取function
|
||||
func = getattr(tasks, obj.task.name)
|
||||
exist_job = tasks.scheduler.get_job(obj.job_id)
|
||||
if exist_job:
|
||||
print(exist_job.id)
|
||||
exist_job.remove()
|
||||
print(tasks.scheduler.get_jobs())
|
||||
# 如果任务未启用,只保存,不入库,已存在任务就删除
|
||||
if not obj.task_exec:
|
||||
obj.save()
|
||||
pt_spider.send_text('计划任务:' + obj.job_id + '任务添加失败!原因:' + str(e))
|
||||
messages.add_message(request, messages.ERROR, obj.job_id + '任务添加失败!原因:' + str(e))
|
||||
messages.success(request, obj.job_id + ' 保存成功!如需执行任务,请勾选开启任务!')
|
||||
else:
|
||||
try:
|
||||
# new_job = None
|
||||
if obj.trigger == Trigger.cron:
|
||||
new_job = tasks.scheduler.add_job(func,
|
||||
trigger=CronTrigger.from_crontab(obj.expression_time),
|
||||
id=obj.job_id,
|
||||
replace_existing=obj.replace_existing,
|
||||
misfire_grace_time=obj.misfire_grace_time,
|
||||
jitter=obj.jitter, )
|
||||
if obj.trigger == Trigger.interval:
|
||||
time_delta = 1
|
||||
time_str = obj.expression_time.split('*')
|
||||
for i in time_str:
|
||||
time_delta *= int(i)
|
||||
new_job = tasks.scheduler.add_job(func,
|
||||
trigger=obj.trigger,
|
||||
id=obj.job_id,
|
||||
seconds=time_delta,
|
||||
replace_existing=obj.replace_existing,
|
||||
misfire_grace_time=obj.misfire_grace_time,
|
||||
jitter=obj.jitter, )
|
||||
|
||||
print(new_job.pending)
|
||||
info = ' 添加成功!' if not exist_job else '更新成功!'
|
||||
pt_spider.send_text('计划任务:' + new_job.id + info)
|
||||
messages.success(request, new_job.id + info)
|
||||
obj.save()
|
||||
except Exception as e:
|
||||
obj.task_exec = False
|
||||
obj.save()
|
||||
raise
|
||||
pt_spider.send_text('计划任务:' + obj.job_id + '任务添加失败!原因:' + str(e))
|
||||
messages.error(request, obj.job_id + '任务添加失败!原因:' + str(e))
|
||||
|
||||
def delete_model(self, request, obj):
|
||||
print(obj)
|
||||
|
||||
@@ -1186,7 +1186,7 @@ class PtSpider:
|
||||
for seed_vol in seed_vol_list:
|
||||
# print(etree.tostring(seed_vol))
|
||||
vol = ''.join(seed_vol.xpath('.//text()'))
|
||||
print(vol)
|
||||
# print(vol)
|
||||
if not len(vol) <= 0:
|
||||
seed_vol_all += FileSizeConvert.parse_2_byte(
|
||||
vol.replace('i', '') # U2返回字符串为mib,gib
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Create your views here.
|
||||
import datetime
|
||||
import logging
|
||||
import socket
|
||||
import time
|
||||
from concurrent.futures.thread import ThreadPoolExecutor
|
||||
|
||||
@@ -184,8 +185,17 @@ try:
|
||||
'> {} 任务运行成功!耗时:{}{} \n'.format('获取种子HASH', end - start, time.strftime("%Y-%m-%d %H:%M:%S")))
|
||||
|
||||
|
||||
scheduler.start()
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.bind(("127.0.0.1", 44444))
|
||||
except socket.error:
|
||||
print("!!!scheduler started, DO NOTHING")
|
||||
except Exception as e:
|
||||
print(e)
|
||||
# 有错误就停止定时器
|
||||
scheduler.shutdown()
|
||||
print('1111', e)
|
||||
finally:
|
||||
try:
|
||||
scheduler.start()
|
||||
# print('启动后台任务', scheduler.get_jobs())
|
||||
except Exception as e:
|
||||
print('启动后台任务启动任务失败!', e)
|
||||
# 有错误就停止定时器
|
||||
# scheduler.shutdown()
|
||||
|
||||
Reference in New Issue
Block a user