可运行
This commit is contained in:
BIN
jobs/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
jobs/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
jobs/__pycache__/launcher.cpython-313.pyc
Normal file
BIN
jobs/__pycache__/launcher.cpython-313.pyc
Normal file
Binary file not shown.
@@ -1,11 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from application import app,manager
|
||||
from flask_script import Command,Option
|
||||
import argparse,sys,traceback
|
||||
from application import app
|
||||
import click
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
'''
|
||||
python manage.py runjob -m Test ( jobs/tasks/Test.py )
|
||||
python manage.py runjob -m test/Index ( jobs/tasks/test/Index.py )
|
||||
python flask runjob -m Test ( jobs/tasks/Test.py )
|
||||
python flask runjob -m test/Index ( jobs/tasks/test/Index.py )
|
||||
* name or flags - 名称或选项字符串列表, e.g. foo or -f, --foo.
|
||||
* action - 参数如果定义了选项,表示这是一个操作参数,至于调用时做哪种操作由用户输入或者default决定。
|
||||
* nargs - 应该使用的命令行参数数。.
|
||||
@@ -18,40 +19,38 @@ python manage.py runjob -m test/Index ( jobs/tasks/test/Index.py )
|
||||
* metavar - useage中显示的参数的名称.
|
||||
* dest - 要添加到解析参数返回的对象中的属性的名称.
|
||||
'''
|
||||
class runJob( Command ):
|
||||
|
||||
capture_all_args = True
|
||||
def run(self,*args,**kwargs):
|
||||
args = sys.argv[2:]
|
||||
parser = argparse.ArgumentParser( add_help = True )
|
||||
def register_runjob_command():
|
||||
"""注册runjob命令到Flask CLI"""
|
||||
@app.cli.command("runjob")
|
||||
@click.option("-m", "--name", required=True, help="指定job名")
|
||||
@click.option("-a", "--act", help="Job动作")
|
||||
@click.option("-p", "--param", multiple=True, help="业务参数")
|
||||
def runjob(name, act, param):
|
||||
"""运行定时任务"""
|
||||
ret_params = {
|
||||
'name': name,
|
||||
'act': act,
|
||||
'param': list(param) if param else []
|
||||
}
|
||||
|
||||
parser.add_argument("-m","--name",dest = "name",metavar = "name", help="指定job名",required=True)
|
||||
parser.add_argument("-a","--act",dest = "act",metavar = "act", help="Job动作",required=False)
|
||||
parser.add_argument("-p","--param",dest = "param",nargs = "*", metavar = "param",help="业务参数",default = '',required=False)
|
||||
params = parser.parse_args( args )
|
||||
params_dict = params.__dict__
|
||||
ret_params = {}
|
||||
for item in params_dict.keys():
|
||||
ret_params[ item ] = params_dict[ item ]
|
||||
if not ret_params['name']:
|
||||
tip_msg = '''
|
||||
请正确调度Job
|
||||
flask runjob -m Test ( jobs/tasks/Test.py )
|
||||
flask runjob -m test/Index ( jobs/tasks/test/Index.py )
|
||||
'''
|
||||
app.logger.info(tip_msg)
|
||||
click.echo(tip_msg)
|
||||
return False
|
||||
|
||||
if "name" not in ret_params or not ret_params['name']:
|
||||
return self.tips()
|
||||
|
||||
module_name = ret_params['name'].replace( "/","." )
|
||||
module_name = ret_params['name'].replace("/", ".")
|
||||
try:
|
||||
import_string = "from jobs.tasks.%s import JobTask as job_target" % ( module_name )
|
||||
exec( import_string , globals() )
|
||||
import_string = "from jobs.tasks.%s import JobTask as job_target" % (module_name)
|
||||
exec(import_string, globals())
|
||||
target = job_target()
|
||||
target.run( ret_params )
|
||||
target.run(ret_params)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
|
||||
|
||||
def tips(self):
|
||||
tip_msg = '''
|
||||
请正确调度Job
|
||||
python manage runjob -m Test ( jobs/tasks/Test.py )
|
||||
python manage runjob -m test/Index ( jobs/tasks/test/Index.py )
|
||||
'''
|
||||
app.logger.info( tip_msg )
|
||||
return False
|
||||
click.echo(f"执行任务失败: {str(e)}")
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user