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:
-
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
-
Đă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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1b4f51beaa428fc109baa932684196e576a56ca5d63a639463d55798c452396 |
|
MD5 | 32c4869551c20812d155444209f80d70 |
|
BLAKE2b-256 | f19454aa7b2675ad8bb2d00337a6d14a98a14faa32872568d12f49cfe1f169ac |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19ad7d1d5f8f6f0919102b47ef6cfb8a806ba9ff856a64d7b93f911029e08c34 |
|
MD5 | 2261d9c6f85188539c4f986eb9084381 |
|
BLAKE2b-256 | 261acf560f437745df94172d6965ec94a3b8ea5fc3db72a5be14090705aad2ca |