Metadata-Version: 2.1
Name: autojob
Version: 1.0.0
Summary: Django customizes management pages based on APScheduler
Home-page: https://github.com/lmycc/autojob
Author: zkrliumy
Author-email: zkrliumy@163.com
License: UNKNOWN
Description: # README.md
        - [English](https://github.com/lmycc/autojob/blob/main/README.md)
        - [简体中文](https://github.com/lmycc/autojob/blob/main/README.zh_CN.md)
        
        # AutoJob
        
        #### AutoJob 是整合了APScheduler和Django的一个定时任务app，只需安装依赖，通过一定配置即可完成定时任务的开发，可通过页面管理定时任务的编辑和状态变更
        #### 该app解决了在 Django + uwsgi 部署应用时，启动多个进程会导致定时任务启动冲突的情况
        #### 暂只支持`corn`和`date`两种类型，本地需安装redis
        #### 该定时任务还适配了simple-ui前端框架
        
        ## 安装方式
        ```
        pip install autojob
        ```
        ## 使用方式
        
        ### 1. 添加 "autojob" 到 `settings.py`的 INSTALLED_APPS 中：
        ```
        INSTALLED_APPS = [
            ...
            'autojob.apps.AutoJob',
        ]
        ```
        
        ### 2. 执行 `python manage.py migrate autojob` 迁移数据表，下面是添加触发器的方式
        #### 两种录入自定义定时任务的方式
        - **终端命令方式**
        ```
        ## django项目中编写了自定义的定时任务后，可以在终端执行以下命令：
        python manage.py scan_jobs
        
        ##返回以下信息，即表示成功添加了定时任务触发器到数据表中（重复执行不会导致重复添加）：
        ###检测到新增定时任务：myapp.abc.job_test
        ```
        - **代码调用方式**
        ```
        ## 这种方式是在`wsgi.py`文件中增加对command的引用来录入自定义定时任务触发器
        from app.management.commands.scan_jobs import Command
        scan_jobs = Command()
        scan_jobs.handle()
         
        ##返回以下信息，即表示成功添加了定时任务触发器到数据表中（重复执行不会导致重复添加）：
        ###检测到新增定时任务：myapp.abc.job_test
        ```
        
        ### 3. django应用启动时调用定时任务，在 `wsgi.py`中添加：
        ```
        from autojob import job_tool
        job_tool.job_control()
        ```
        
        ### 4. 在 `settings.py`添加redis配置
        ```
        CACHES = {
            "default": {
                "BACKEND": "django_redis.cache.RedisCache",
                "LOCATION": "redis://127.0.0.1:6379/0",
                "OPTIONS": {
                    "PICK_VERSION": -1,
                    "COMPRESSOR": "django_redis.compressors.zlib.ZlibCompressor",
                    "CLIENT_CLASS": "django_redis.client.DefaultClient",
                    "PASSWORD": ""
                }
            }
        }
        ```
        
        ### 5. 一个测试任务的demo： `job_test.py`
        
        ```
        # coding=utf-8
        import datetime
        import logging
        
        from app.job_tool import job_before
        
        logger = logging.getLogger(__name__)
        
        
        @job_before
        def job_test(*args):
            # 当应用程序启动时，录入任务触发器时会读取下面这行文档当做触发器的描述，如果没有则默认描述是函数的路径
            """一个测试的定时任务"""
            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            logger.info(now + '__This is a timed task for testing:' + args[0])
        ```
        
        
Keywords: autojob
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2
Classifier: Framework :: Django :: 3
Classifier: Framework :: Django :: 4
Description-Content-Type: text/markdown
