From 458ba7ea4da69650ca0dcb7f7355eeacdf6de38a Mon Sep 17 00:00:00 2001 From: ngfchl Date: Tue, 4 Oct 2022 15:44:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=A1=E5=88=92=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=BF=90=E8=A1=8C=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auto_pt/admin.py | 81 +++++++++++++++++++++++------------------- pt_site/UtilityTool.py | 2 +- pt_site/views.py | 18 +++++++--- 3 files changed, 59 insertions(+), 42 deletions(-) diff --git a/auto_pt/admin.py b/auto_pt/admin.py index ee7161d..a8aa9d5 100644 --- a/auto_pt/admin.py +++ b/auto_pt/admin.py @@ -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) diff --git a/pt_site/UtilityTool.py b/pt_site/UtilityTool.py index 8843a11..fe5ce85 100644 --- a/pt_site/UtilityTool.py +++ b/pt_site/UtilityTool.py @@ -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 diff --git a/pt_site/views.py b/pt_site/views.py index e816ced..dc77836 100644 --- a/pt_site/views.py +++ b/pt_site/views.py @@ -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()