Skip to main content

Tạo schedule chạy theo lịch

Project description

Thư viện Schedule trên ngôn ngữ Python để chạy service background.

Copyright: MobioVN

CHANGE LOG:

v1.0.1

  • Support Redis cluster

v1.0.0

  • Breaking change:
    • Core concept của phiên bản này là các schedule có thể chạy song song nhằm giải quyết các bài toán như xử lý import excel, csv đồng thời.
    • Để tránh N schedule cùng xử lý 1 file, call self.check_job_allow_running(str_job_id) để check xem job đấy trong 5seconds vừa qua đã có được worker nào xử lý hay không?
    • Giải thuật ở đây là tận dụng Atomic của redis, sử dụng incrby function để check redis-key đã tồn tại chưa? chỉ có worker thao tác incrby đầu tiên(return value = 1) mới có quyền xử lý file

v0.6.7

  • Sửa lỗi key "last_run"

Cài đặt:

$ pip3 install m-schedule

Sử dụng:

  1. Tạo class thực thi scheduler kế thừa từ class BaseScheduler

    class TestScheduler(BaseScheduler):
        def owner_do(self):
            lst_job = db.excel_file.find({"status":0}).limit(1)
            for job in lst_job:
                if self.check_job_allow_running(str(job.id)):
                    print("execute {}".format(job.id))
                else:
                    print("job {} is running".format(job.id))
            pass
    
        def get_schedule(self):
            """
            hàm xác định thời điểm chạy của scheduler, bằng cách xử dụng thư viện schedule
            Các ví dụ hướng dẫn cách xác định thời gian chạy
            1. scheduler chỉ thực hiện công việc một lần duy nhất.
                return None
            2. scheduler sẽ thực hiện mỗi 10 phút một lần.
                return schedule.every(10).minutes
            3. scheduler sẽ thực hiện hàng ngày vào lúc 10h 30 phút.
                return schedule.every().day.at("10:30")
            4. scheduler sẽ thực hiện sau mỗi giờ.
                return schedule.every().hour
            5. scheduler sẽ thực hiện vào mỗi thứ 2 hàng tuần.
                return schedule.every().monday
            6. scheduler sẽ thực hiện vào mỗi thứ 5 hàng tuần và vào lúc 13h 15'.
                return schedule.every().wednesday.at("13:15")
            """
        return schedule.every(10).minutes
    
  2. Đăng ký scheduler với factory

    factory = SchedulerFactory()
    factory.add(TestScheduler(name="MyScheduler", redis_uri="redis://redis-server:6379/0"))
    # sample using redis cluster
    factory.add(TestScheduler(name="MyScheduler1", redis_cluster_uri="redis://redis-cluster.redis.svc.cluster.local:6379/0", redis_type=RedisType.REPLICA))
    factory.run()
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

m-schedule-1.0.1.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

m_schedule-1.0.1-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file m-schedule-1.0.1.tar.gz.

File metadata

  • Download URL: m-schedule-1.0.1.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.8

File hashes

Hashes for m-schedule-1.0.1.tar.gz
Algorithm Hash digest
SHA256 e1b4f51beaa428fc109baa932684196e576a56ca5d63a639463d55798c452396
MD5 32c4869551c20812d155444209f80d70
BLAKE2b-256 f19454aa7b2675ad8bb2d00337a6d14a98a14faa32872568d12f49cfe1f169ac

See more details on using hashes here.

File details

Details for the file m_schedule-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: m_schedule-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.8

File hashes

Hashes for m_schedule-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 19ad7d1d5f8f6f0919102b47ef6cfb8a806ba9ff856a64d7b93f911029e08c34
MD5 2261d9c6f85188539c4f986eb9084381
BLAKE2b-256 261acf560f437745df94172d6965ec94a3b8ea5fc3db72a5be14090705aad2ca

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page