Flask笔记-任务框架搭建
生活随笔
收集整理的這篇文章主要介紹了
Flask笔记-任务框架搭建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個是個很好的結構,如下:
先貼下代碼:
base_setting.py
DEBUG = Truelocal_setting.py
local_setting.pyproduction_setting.py
from config.base_setting import *DEBUG = Falsetest.py
class JobTask():def __init__(self):passdef run(self, params):print("Job測試打印")print(params)passlauncher.py
from flask_script import Command import sys, argparse, traceback, importlib''' Job統一入口文件 python manager.py runjob -m Test python manager.py runjob -m test/index第一個jobs/tasks/Test.py 第二個jobs/tasks/test/index.py '''class runJob(Command):capture_all_args = True #flask_script有一個未記錄的capture_all_flags flag,它將把剩余的參數傳遞給Command.run方法def run(self, *args, **kwargs):args = sys.argv[2:]print(args)parser = argparse.ArgumentParser(add_help=True)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="業務參數", required=False)params = parser.parse_args(args)params_dict = params.__dict__print(params)print(params_dict)if "name" not in params_dict or not params_dict['name']:return self.tips()try:'''類似java的反射,導入包from jobs.xxx.xxx import JobTask'''module_name = params_dict['name'].replace("/", ".")import_string = "jobs.tasks.%s" % (module_name)target = importlib.import_module(import_string)exit(target.JobTask().run(params_dict))except Exception as e:traceback.print_exc()passdef tips(self):tip_msg = '''請正確的調度Jobpython manager.py runjob -m test ( jobs/tasks/test.py )python manager.py runjob -m test/index ( jobs/tasks/test/index.py )'''print( tip_msg )returnpassapplication.py
from flask import Flask from flask_script import Manager import osapp = Flask(__name__)manager = Manager(app)app.config.from_pyfile("config/base_setting.py") if "ops_config" in os.environ:app.config.from_pyfile("config/%s_setting.py" % (os.environ['ops_config']))passmanager.py
from flask_script import Server, Command from application import app, manager from jobs.launcher import runJobmanager.add_command("runjob", runJob)def main():manager.run()passif __name__ == "__main__":try:import syssys.exit(main())passexcept Exception as e:import tracebacktraceback.print_exc()passpassrequirement.txt
flask flask-script apscheduler Flask-APScheduler requests BeautifulSoup4程序是這樣運行的,如下:
requirement.txt是庫文件,在部署開發環境時,這樣使用:
pip install -r requirement.txtmanager.py是主要的管理類。程序的入口。
application.py為核心程序,管理Flask中的app,和flask_script的Manager,并且加載config下的配置文件。
這里開發環境會加載:
base_setting.py + local_setting.py
生產環境會加載:
base_setting.py + production_setting.py
?
launcher.py為任務的入口文件,主要是管理參數方面的問題。
在jobs文件夾下的tasks為具體的任務文件。?
總結
以上是生活随笔為你收集整理的Flask笔记-任务框架搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端笔记-vue cli使用echart
- 下一篇: C++工作笔记-使用namespace构