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',)
|
list_editable = ('task_exec',)
|
||||||
|
|
||||||
def save_model(self, request, obj: TaskJob, form, change):
|
def save_model(self, request, obj: TaskJob, form, change):
|
||||||
obj.save()
|
# 从字符串获取function
|
||||||
|
func = getattr(tasks, obj.task.name)
|
||||||
try:
|
exist_job = tasks.scheduler.get_job(obj.job_id)
|
||||||
# 从字符串获取function
|
if exist_job:
|
||||||
func = getattr(tasks, obj.task.name)
|
print(exist_job.id)
|
||||||
exist_job = tasks.scheduler.get_job(obj.job_id)
|
exist_job.remove()
|
||||||
|
print(tasks.scheduler.get_jobs())
|
||||||
new_job = None
|
# 如果任务未启用,只保存,不入库,已存在任务就删除
|
||||||
if obj.trigger == Trigger.cron:
|
if not obj.task_exec:
|
||||||
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
|
|
||||||
obj.save()
|
obj.save()
|
||||||
pt_spider.send_text('计划任务:' + obj.job_id + '任务添加失败!原因:' + str(e))
|
messages.success(request, obj.job_id + ' 保存成功!如需执行任务,请勾选开启任务!')
|
||||||
messages.add_message(request, messages.ERROR, obj.job_id + '任务添加失败!原因:' + str(e))
|
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):
|
def delete_model(self, request, obj):
|
||||||
print(obj)
|
print(obj)
|
||||||
|
|||||||
@@ -1186,7 +1186,7 @@ class PtSpider:
|
|||||||
for seed_vol in seed_vol_list:
|
for seed_vol in seed_vol_list:
|
||||||
# print(etree.tostring(seed_vol))
|
# print(etree.tostring(seed_vol))
|
||||||
vol = ''.join(seed_vol.xpath('.//text()'))
|
vol = ''.join(seed_vol.xpath('.//text()'))
|
||||||
print(vol)
|
# print(vol)
|
||||||
if not len(vol) <= 0:
|
if not len(vol) <= 0:
|
||||||
seed_vol_all += FileSizeConvert.parse_2_byte(
|
seed_vol_all += FileSizeConvert.parse_2_byte(
|
||||||
vol.replace('i', '') # U2返回字符串为mib,gib
|
vol.replace('i', '') # U2返回字符串为mib,gib
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# Create your views here.
|
# Create your views here.
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
|
import socket
|
||||||
import time
|
import time
|
||||||
from concurrent.futures.thread import ThreadPoolExecutor
|
from concurrent.futures.thread import ThreadPoolExecutor
|
||||||
|
|
||||||
@@ -184,8 +185,17 @@ try:
|
|||||||
'> {} 任务运行成功!耗时:{}{} \n'.format('获取种子HASH', end - start, time.strftime("%Y-%m-%d %H:%M:%S")))
|
'> {} 任务运行成功!耗时:{}{} \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:
|
except Exception as e:
|
||||||
print(e)
|
print('1111', e)
|
||||||
# 有错误就停止定时器
|
finally:
|
||||||
scheduler.shutdown()
|
try:
|
||||||
|
scheduler.start()
|
||||||
|
# print('启动后台任务', scheduler.get_jobs())
|
||||||
|
except Exception as e:
|
||||||
|
print('启动后台任务启动任务失败!', e)
|
||||||
|
# 有错误就停止定时器
|
||||||
|
# scheduler.shutdown()
|
||||||
|
|||||||
Reference in New Issue
Block a user