Nhiều công ty sử dụng ngôn ngữ lập trình Python cho các ứng dụng khoa học dữ liệu, mô hình máy học và các loại tác vụ phân tích khác. Vì Python thường chỉ được sử dụng cho các dự án cụ thể nên nhiều doanh nghiệp phải tích hợp nó vào quy trình làm việc của họ theo chương trình. Điều này có nghĩa là họ cần một cách để tự động hóa quy trình để quy trình chạy độc lập khi cần thiết và theo lịch trình. May mắn thay, có nhiều cách để tích hợp Python với các công việc định kỳ để tự động hóa việc thực thi thường xuyên khi cần thiết Show
Trong bài viết này, bạn sẽ tìm hiểu cách lên lịch Python bằng cách sử dụng cron và một số ví dụ hữu ích về thời điểm và cách bạn có thể sử dụng các phương pháp này trong tổ chức của mình Chạy tập lệnh Python với CrontabTôi đã tạo một ứng dụng Python mẫu, yêu cầu tập lệnh chạy 15 phút một lần. Bạn có thể sử dụng import sentry_sdk sentry_sdk.init( dsn="https://[email protected]/0", traces_sample_rate=1.0, )8 để mở trình chỉnh sửa crontab và thêm công việc như bên dưới Tập lệnh Python có thể được định cấu hình bằng một trong các tùy chọn bên dưới tùy thuộc vào môi trường
Gói (lạiTrong hướng dẫn cách thực hiện nhanh này, bạn đã học cách lên lịch cho các tập lệnh Python bằng crontab trong hệ thống Linux và macOS Theo chỉ số TIOBE, Python là ngôn ngữ lập trình phổ biến nhất được sử dụng trên toàn thế giới vào tháng 6 năm 2022, với 12. 2% chia sẻ. Python phổ biến vì nó dễ học, có các thư viện xuất sắc và đạt điểm cao về hiệu suất cũng như tính linh hoạt thu hút các nhà phát triển, nhà khoa học dữ liệu và nhà phân tích. Tính linh hoạt này cũng làm cho Python trở thành một lựa chọn mạnh mẽ và phổ biến khi tạo một công việc định kỳ Trước khi đi xa hơn, chúng ta nên định nghĩa chính xác cron a job là gì. Theo định nghĩa cổ điển, một công việc định kỳ là một lệnh trên máy chủ Linux hoặc Unix chạy theo lịch trình do người dùng xác định bằng cách sử dụng bộ lập lịch trình import sentry_sdk sentry_sdk.init( dsn="https://[email protected]/0", traces_sample_rate=1.0, )2 cấp hệ thống. Điều này vẫn đúng cho đến ngày nay và hiện tại đã gần 50 năm tuổi, các công cụ lập lịch định kỳ trên toàn thế giới đang chạy nhiều công việc hơn bao giờ hết. Nhưng cũng đúng là ở đây vào năm 2022, định nghĩa về công việc định kỳ đã được mở rộng khá nhiều và thường có nghĩa là một thứ gì đó đang chạy trong nền vào một thời điểm đã lên lịch Hầu hết thời gian, nhưng không phải lúc nào cũng vậy, một đặc điểm xác định của công việc định kỳ là cú pháp lịch trình cron khét tiếng, một định dạng ngắn gọn để xác định hầu hết mọi loại lịch trình trông giống như một biểu thức chính quy. Những lịch trình này, như import sentry_sdk sentry_sdk.init( dsn="https://[email protected]/0", traces_sample_rate=1.0, )3 đủ khó để đọc và viết mà 400.000 khách truy cập sử dụng Crontab Guru mỗi tháng để giải mã chúng thành tiếng Anh đơn giản Hiểu công việc định kỳ của bạnNắm bắt trạng thái, số liệu và nhật ký từ mọi công việcCảnh báo tức thì khi một công việc thất bại hoặc không bao giờ bắt đầu Tìm hiểu thêmCách tạo một công việc định kỳ với PythonHướng dẫn này sẽ giới thiệu một số cách phổ biến nhất để tạo các công việc định kỳ với Python, nhưng nó không có nghĩa là một danh sách đầy đủ. Có nhiều thư viện và nền tảng để chạy công việc, nhưng ở đây chúng tôi sẽ đề cập Chạy tập lệnh Python dưới dạng công việc định kỳTrước khi bạn có thể lên lịch mã python của mình để chạy như một công việc định kỳ, bạn cần tổ chức nó dưới dạng một tập lệnh mà bạn có thể chạy từ dòng lệnh. Nếu mã của bạn tồn tại bên trong thứ gì đó như chế độ xem Django hoặc đường dẫn FastAPI, thì bạn sẽ cần thực hiện một số thao tác tái cấu trúc để chuyển mã vào một mô-đun dùng chung mà khung của bạn có thể sử dụng và được gọi trực tiếp trong tập lệnh Python Nếu bạn đang chạy mã của mình dưới dạng tập lệnh dòng lệnh lần đầu tiên, thì thường có một vài điều mà mọi tập lệnh đều cần
Với kịch bản trong tay, điều đầu tiên bạn nên làm là tự chạy nó từ dòng lệnh để đảm bảo rằng nó chạy thành công và ghi nhật ký đầu ra mà bạn sẽ muốn xem từ công việc của mình */15 * * * * /usr/bin/python3.10 /home/tecadmin/app/cron.py0 Cuối cùng, đã đến lúc đăng ký tập lệnh của bạn với trình nền import sentry_sdk sentry_sdk.init( dsn="https://[email protected]/0", traces_sample_rate=1.0, )2 đang chạy trên máy của bạn. Có nhiều cách để lên lịch các công việc định kỳ nhưng hướng dẫn này sẽ tập trung vào hai tùy chọn đơn giản. Phương pháp bạn chọn sẽ phụ thuộc vào việc bạn có quyền truy cập import sentry_sdk sentry_sdk.init( dsn="https://[email protected]/0", traces_sample_rate=1.0, )8 trên máy linux hay không
Với kịch bản của bạn được viết, kiểm tra và lên lịch, bạn gần như đã hoàn thành. Bạn sẽ nghĩ rằng một tập lệnh phù hợp với bạn cũng sẽ hoạt động khi được chạy dưới dạng một công việc định kỳ, nhưng có một số điểm khác biệt chính giữa trình bao của bạn và môi trường thực thi định kỳ và những khác biệt này thường có thể gây đau đầu khi lên lịch công việc
Bằng cách làm theo các phương pháp hay nhất này và với một chút may mắn, hy vọng bạn sẽ thấy rằng công việc định kỳ của mình chạy chính xác vào thời gian đã định và kết thúc thành công. Nếu bạn không may mắn như vậy, chúng tôi có một hướng dẫn khắc phục sự cố toàn diện cho các công việc định kỳ sẽ hướng dẫn bạn từng bước về những lý do gây ra hầu hết các công việc định kỳ thất bại Chạy một công việc định kỳ bằng cách sử dụng */15 * * * * /usr/bin/python3.10 /home/tecadmin/app/cron.py 09 với bộ lập lịch nhịpCần tây là một thư viện Python phổ biến để chạy các tác vụ nền với hàng đợi tác vụ không đồng bộ kích hoạt các lệnh trong một quy trình công nhân riêng biệt. Trường hợp sử dụng phổ biến nhất là thêm công việc vào hàng đợi tác vụ cần thiết từ mã ứng dụng của bạn khi người dùng thực hiện những việc như yêu cầu email đặt lại mật khẩu. Khi bạn sử dụng gói */15 * * * * /usr/bin/python3.10 /home/tecadmin/app/cron.py70, bạn cũng có thể thêm các công việc đã lên lịch cùng với các tác vụ theo sự kiện này. Ghi chú. Hướng dẫn này giả định rằng bạn đã chạy Celery trong ứng dụng của mình Đầu tiên, tìm mã khởi tạo Celery của bạn và thêm một tác vụ cho công việc định kỳ mới của bạn. Điều này thường nằm trong một tệp có tên là */15 * * * * /usr/bin/python3.10 /home/tecadmin/app/cron.py71 import sentry_sdk sentry_sdk.init( dsn="https://[email protected]/0", traces_sample_rate=1.0, )2 Xác định lịch đánh nhịp sẽ được Celery đọc khi khởi động import sentry_sdk sentry_sdk.init( dsn="https://[email protected]/0", traces_sample_rate=1.0, )0 Thưởng. Tự động theo dõi các công việc cron Celery của bạn với Cronitor import sentry_sdk sentry_sdk.init( dsn="https://[email protected]/0", traces_sample_rate=1.0, )1 Sử dụng công cụ của bên thứ ba như Google Cloud Scheduler để chạy mã Python của bạnÝ tưởng đằng sau bộ lập lịch trên đám mây rất đơn giản. Bạn cung cấp lịch trình và URL tới điểm cuối trong ứng dụng web của mình và dịch vụ sẽ tải điểm cuối của bạn vào những thời điểm thích hợp, thường có các tính năng thú vị như thử lại và chụp đầu ra. Các nhà cung cấp đám mây lớn cung cấp bộ lập lịch, ví dụ như Google Cloud Scheduler do GCP cung cấp và có một số dịch vụ SaaS khác để lên lịch và chạy công việc, bao gồm cả dịch vụ miễn phí phổ biến Cron-Job. tổ chức Dưới đây là biểu mẫu cấu hình cho một công việc đã lên lịch mới bằng Trình lập lịch biểu đám mây. Ngoài các trường phổ biến như tên và mô tả, bạn còn lại các tùy chọn cấu hình giống như bạn tìm thấy với các công việc định kỳ của Linux hoặc Celery. Trường */15 * * * * /usr/bin/python3.10 /home/tecadmin/app/cron.py72 cho lịch trình cron, bộ chọn */15 * * * * /usr/bin/python3.10 /home/tecadmin/app/cron.py73 được sử dụng khi đánh giá lịch trình của bạn và cuối cùng là */15 * * * * /usr/bin/python3.10 /home/tecadmin/app/cron.py74 chỉ định URL web để kích hoạt Ưu điểm của việc sử dụng bộ lập lịch của bên thứ 3 là bạn có thể thêm một công việc định kỳ vào ứng dụng của mình chỉ bằng cách thêm một điểm cuối mới và lên lịch cho URL của nó để thực thi. Đây là một phương pháp phổ biến để bắt đầu với các công việc định kỳ, nhưng có một số lo ngại với phương pháp này có thể dẫn đến việc thực thi công việc định kỳ không đáng tin cậy * * * * * Trong công việc định kỳ là gì?Định dạng công việc định kỳ
. Bạn có thể sử dụng bảng điều khiển Google Cloud, Google Cloud CLI hoặc API REST của Trình lập lịch biểu đám mây để đặt lịch trình của mình. a set of five fields in a line, indicating when the job should be executed. You can use either the Google Cloud console, the Google Cloud CLI, or the Cloud Scheduler REST API to set your schedule.
Làm cách nào để cài đặt crontab trong Python?Cài đặt python-crontab
. Điều này sẽ tự động cài đặt mô-đun cần thiết và khi bạn đã hoàn tất với mô-đun đó, chúng ta sẽ sẵn sàng làm việc với mô-đun đó. install the required module, this can be done with the pip package manager command in the shell. This should automatically install the required module, and once you're done with it, we should be ready to work with it! |