优化计划任务运行模式

This commit is contained in:
ngfchl
2022-10-04 15:44:50 +08:00
parent 2aa795b25b
commit 458ba7ea4d
3 changed files with 59 additions and 42 deletions

View File

@@ -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)

View File

@@ -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返回字符串为mibgib

View File

@@ -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()