Chạy tập lệnh python trong cửa sổ môi trường ảo

Phương pháp được mô tả bên dưới giả định rằng bạn đã tạo môi trường ảo Python và cài đặt mô-đun [hoặc các mô-đun] mà bạn muốn sử dụng. Để biết thông tin về cách thực hiện việc này, vui lòng xem bài viết này và bài viết này

Kích hoạt môi trường ảo Python từ tệp tập lệnh

Có rất nhiều mô-đun có sẵn để mở rộng chức năng Python. Để cài đặt các mô-đun này, bạn tạo một môi trường ảo và sử dụng lệnh pip [hoặc ứng dụng cPanel Python Selector]

Để thực sự sử dụng các mô-đun này trong tập lệnh hoặc chương trình, bạn phải kích hoạt môi trường ảo Python chứa chúng. Tùy thuộc vào cấu hình và yêu cầu của bạn, bạn có thể chỉ cần sử dụng chương trình kích hoạt/bin của môi trường ảo để kích hoạt, sau đó chạy các lệnh từ trình bao

Tuy nhiên, trong các trường hợp khác, bạn có thể cần kích hoạt động môi trường ảo trực tiếp từ tập lệnh hoặc chương trình. Một ví dụ về kịch bản như vậy là tệp tập lệnh Python CGI, được gọi trực tiếp bởi máy chủ web. Để sử dụng mô-đun của môi trường ảo trong trường hợp như vậy, hãy sử dụng hàm activate_this. tập lệnh py để kích hoạt trực tiếp môi trường ảo

Tệp tập lệnh Python CGI mẫu sau đây trình bày cách thực hiện việc này. Để chạy mã này trên tài khoản của riêng bạn, hãy làm như sau

  • Thay thế tên người dùng bằng tên người dùng tài khoản A2 Hosting của bạn
  • Thay thế ứng dụng bằng tên ứng dụng Python của bạn
  • Thay thế x. y với phiên bản Python của môi trường ảo [ví dụ: 2. 7 hoặc 3. số 8]
  • Thay thế mô-đun bằng tên của mô-đun bạn đã cài đặt trong môi trường ảo
  • Thay thế biến bằng tên của một biến từ mô-đun được cài đặt trong môi trường ảo
#!/home/username/virtualenv/application/x.y/bin/python

import os
import sys
import pkg_resources

activate_this = str[os.path.dirname[sys.executable]] + '/activate_this.py'
with open[activate_this] as f:
        code = compile[f.read[], activate_this, 'exec']
        exec[code, dict[__file__=activate_this]]

from module import variable

print ["Content-type:text/html\r\n\r\n"]
print ['']
print ['']
print ['Virtualenv test']
print ['']
print ['']
print ['

If you see this, the module import was successful

'] print ['Python version: ' + sys.version] print ['
'] print ['Python executable: ' + str[sys.executable]] print ['
'] print ['Installed modules: '] print [[p.project_name for p in pkg_resources.working_set]] print ['
'] print [''] print ['']

Khi bạn chạy tập lệnh này từ dòng lệnh hoặc tải nó trong trình duyệt web của mình, bạn sẽ nhận được thông báo sau

If you see this, the module import was successful

Điều này cho biết rằng câu lệnh biến nhập từ mô-đun đã thành công và biến của môi trường ảo hiện có sẵn để bạn sử dụng trong tập lệnh. Ngoài ra, tập lệnh in thông tin về môi trường Python

Nếu bạn không nhận được thông báo “thành công” trong trình duyệt của mình, hãy thử chạy tệp script theo cách thủ công từ dòng lệnh. Ví dụ: nếu tệp tập lệnh có tên là tập lệnh. cgi, gõ lệnh sau từ bên trong môi trường ảo

Trong những năm gần đây, đã có sự gia tăng của các ứng dụng Python để thực hiện các tác vụ thông thường, chẳng hạn như quét web, làm sạch dữ liệu và xử lý ETL. Những công việc thường ngày này có thể cần chạy vào thời gian đã lên lịch. Trình lập lịch tác vụ, một bộ lập lịch công việc trong Microsoft Windows, cho phép chúng tôi chạy một tác vụ tại một thời điểm cụ thể hoặc khi một sự kiện xảy ra. Ngoài ra, Windows Event Viewer [đôi khi được gọi là nhật ký sự kiện] lưu trữ mọi thứ xảy ra trong hệ điều hành. Do đó, có vẻ hợp lý khi sử dụng Trình lập lịch tác vụ để chạy các tập lệnh Python và sau đó sử dụng Windows Event Viewer để kiểm tra lịch sử thực thi tập lệnh Python. Vì vậy, làm cách nào chúng ta có thể sử dụng tất cả các kỹ thuật này để tự động hóa các tác vụ thông thường bằng Python trên Windows?

Dung dịch

Mẹo "Tạo công việc tác nhân máy chủ SQL để chạy tập lệnh Python trong môi trường ảo" giới thiệu phương pháp kích hoạt tác vụ tác nhân máy chủ SQL để chạy một tệp bó, tệp này thực thi tập lệnh Python. Phương pháp này sử dụng tệp bó để xử lý mã thoát khỏi quá trình thực thi tập lệnh Python. Bên cạnh SQL Server Agent, Windows Task Scheduler có thể tự động chạy một tệp thi hành tại một thời điểm cụ thể. Tuy nhiên, Windows Task Scheduler không xử lý mã thoát khỏi quá trình thực thi tập lệnh Python giống như SQL Server Agent. Ví dụ: bộ lập lịch tác vụ không hiển thị bất kỳ lỗi hoặc cảnh báo nào khi thực thi bất thường đưa ra một ngoại lệ hoặc thoát với mã thoát khác không. Để các chuyên gia CNTT chú ý đến lỗi thực thi tác vụ, chúng ta có thể kích hoạt Bộ lập lịch tác vụ Windows để chạy một tác vụ khác khi bộ lập lịch tác vụ phát hiện một mã thoát cụ thể. Chúng tôi cũng có thể tạo chế độ xem sự kiện tùy chỉnh để kiểm tra nhật ký thực hiện tác vụ

Để thể hiện quy trình tạo tác vụ tự động bằng Windows Task Scheduler và kiểm tra trạng thái thực thi thông qua Windows Event Viewer, chúng tôi sử dụng dự án được giới thiệu trong mẹo khác của tác giả [Zhou, 2021]. Dự án yêu cầu chúng tôi tải dữ liệu từ bảng HTML sang bảng cơ sở dữ liệu SQL Server mỗi ngày. Thay vì khám phá các bước để cài đặt Python trên Windows, tạo môi trường ảo Python và sắp xếp các tệp ứng dụng trên máy chủ, bài viết này tập trung vào việc sử dụng Windows Task Scheduler và Windows Event View

Bài viết này bao gồm ba phần. Đầu tiên, phần 1 cho chúng ta biết cách chạy tập lệnh Python trong môi trường ảo. Sau đó, phần này khám phá việc tạo một tác vụ tự động trong Trình lập lịch tác vụ. Tiếp theo, chúng tôi tạo hai tác vụ theo lịch trình khác được kích hoạt bởi mã thoát tập lệnh Python. Phần 2 bắt đầu với phần giới thiệu ngắn gọn về Windows Event Viewer. Sau đó, chúng tôi tạo hai chế độ xem sự kiện tùy chỉnh để kiểm tra trạng thái thực thi tập lệnh Python. Tiếp theo, trong Phần 3, chúng ta để Task Scheduler tự động chạy tác vụ tải dữ liệu từ trang web, sau đó chúng ta kiểm tra xem có lỗi nào xảy ra khi thực thi tập lệnh Python không

The author tested the project on Windows 10 Pro 10.0 and ran the Python script with Python 3.10.0 [64-bit]. The DBMS is the Microsoft SQL Server 2019 Developer Edition [64-bit]. The database table is created by using SQL Server Management Studio 15.0.18338.0. In addition, Notepad++ v8.1.9.2 [64-bit] is used to edit the XML queries for creating custom event view filters.

1 –Lập kế hoạch cho Python Script Sử dụng Windows Task Scheduler

Windows Task Scheduler là một trong những ứng dụng Windows thiết thực nhất [Dinita, 2021]. Ứng dụng này cho phép chúng tôi định cấu hình và lên lịch các tác vụ tự động. Trong phần này, chúng tôi tạo một tác vụ theo lịch trình để chạy tập lệnh Python trong môi trường ảo và chúng tôi cũng muốn sử dụng Trình lập lịch tác vụ để kiểm tra trạng thái thực thi tập lệnh Python. Vì vậy, chúng tôi tạo thêm hai tác vụ kích hoạt sự kiện để đáp ứng yêu cầu này. Tác vụ kích hoạt sự kiện chạy khi tập lệnh Python thoát bằng mã 1 hoặc 2. Sau đó, chúng tôi có thể kiểm tra nhật ký sự kiện để biết liệu tập lệnh Python có chạy thành công hay không

1. 1 điều kiện tiên quyết

Chúng ta làm theo các bước trong mẹo Tạo SQL Server Agent Job to Run Python Scripts in a Virtual Environment để cài đặt Python trên Windows. Tiếp theo, chúng tôi bấm vào đây để tải về mã nguồn hoàn chỉnh. Sau đó chúng tôi sử dụng "yêu cầu. txt" trong gói đã tải xuống để tạo môi trường ảo trong thư mục "C. thư mục \pyvirtuals\htmltablescraping". Chúng tôi đặt tệp Python trong thư mục "C. thư mục \pyapps\htmltablescraping". Chúng ta cũng cần tạo một bảng cơ sở dữ liệu và định cấu hình chuỗi kết nối trong tập lệnh Python. Lưu ý hai hàm sau trong tập lệnh Python, "read_web_page_content[]" và "save_html_table_data[]", có thể thoát khỏi chương trình với hai mã lần lượt là 1 và 2

Chúng tôi sử dụng lệnh sau để chạy tập lệnh Python nhiều lần. Chức năng "read_web_page_content[]" có 50% khả năng thất bại. Chức năng khác, "save_html_table_data[]," không thành công nếu chúng tôi đã tải dữ liệu xuống bảng cơ sở dữ liệu. minh họa đầu ra của việc thực hiện chương trình

C:\pyvirtuals\htmltablescraping\Scripts\python.exe C:\pyapps\htmltablescraping\HTML_Table_Scraping.py

Hình 1 Chương trình Python thoát với thông báo lỗi

Vì hai mã thoát lần lượt biểu thị lỗi thực thi hai chức năng này, nên chúng ta có thể sử dụng sự kiện hành động đã hoàn thành với mã trả về khác không để kích hoạt hai tác vụ khác, "không truy cập được trang web" và "không lưu được dữ liệu. " Sau đó, chúng tôi biết tập lệnh Python không chạy thành công nếu một trong hai tác vụ này bắt đầu. Bây giờ, chúng ta hãy tạo một tác vụ để chạy tập lệnh Python mỗi ngày

1. 2 Tạo một tác vụ tự động trong Windows Task Scheduler

Có một số cách để tạo một tác vụ tự động bằng Windows Task Scheduler. Ví dụ: chúng ta có thể tạo tác vụ bằng cách sử dụng cài đặt cơ bản hoặc nâng cao [Huculak, 2019]. Cài đặt cơ bản cung cấp cho chúng tôi trình hướng dẫn để tạo tác vụ; . Trong bài viết này, chúng tôi hướng dẫn các bước để tạo một tác vụ cơ bản

1. 2. 1 Khởi chạy Trình lập lịch tác vụ Windows

Để khởi chạy Windows Task Schedule, trước tiên chúng ta cần đảm bảo rằng dịch vụ lập lịch tác vụ đang chạy. Chúng tôi sử dụng phím tắt "Windows + R" để mở cửa sổ lệnh "Run" [Roe, 2020]. Sau đó, chúng tôi nhập lệnh "dịch vụ. msc" trong hộp "Mở", như minh họa trong

Hình 2 Mở cửa sổ lệnh Run

Nhấp vào nút "OK" để mở cửa sổ dịch vụ, như minh họa trong. Dịch vụ lập lịch tác vụ phải có trạng thái "Đang chạy". Sau đó chúng tôi đóng cửa sổ dịch vụ

Hình 3 Cửa sổ Dịch vụ

Chúng ta sử dụng phím tắt "Windows + R" để truy cập lại cửa sổ lệnh "Run". Lần này, sau đó chúng tôi nhập lệnh "taskchd. msc" trong hộp "Mở" [Neagu, 2018]. Tiếp theo, nhấp vào nút "OK" để khởi chạy Windows Task Scheduler. Trong thư mục gốc "Trình lập lịch tác vụ [Cục bộ]", hãy mở rộng thư mục "Thư viện trình lập lịch tác vụ". Cửa sổ sẽ trông giống như. Ngăn ở giữa hiển thị danh sách các tác vụ và ngăn "Hành động" ở bên trái

Hình 4 Cửa sổ Lập lịch tác vụ

1. 2. 2 Tạo thư mục lịch trình

Trong thư mục chính "Thư viện lập lịch tác vụ", một số thư mục sắp xếp tất cả các tác vụ thành các nhóm khác nhau. Chúng tôi muốn tạo một thư mục mới, "MSSQLTips" cho dự án này. Chọn thư mục "Thư viện lập lịch tác vụ" và nhấp vào "Thư mục mới…" từ ngăn "Hành động". Một hộp thoại xuất hiện. Chúng tôi nhập "MSSQLTips" vào hộp "Tên", như được hiển thị trong

Hình 5 Tạo một thư mục mới

Nhấp vào nút "OK" để đóng hộp thoại. Chúng ta sẽ thấy thư mục mới trong thư mục chính, "Task Schedule Library. "" Khi bấm vào thư mục mới, chúng tôi có thể quan sát thấy rằng danh sách tác vụ ở ngăn giữa trống, như thể hiện trong

Hình 6 Xem các Tác vụ trong Thư mục Mới

1. 2. 3 Tạo một nhiệm vụ cơ bản

Chúng tôi chọn thư mục "MSSQLTips". Trong ngăn "Hành động", nhấp vào "Tạo tác vụ cơ bản..." để mở hộp thoại "Tạo trình hướng dẫn tác vụ cơ bản". Chúng tôi nhập văn bản "Tải xuống bảng HTML" trong trường Tên. Sau đó, nút "Tiếp theo" sẽ được bật. Hộp "Mô tả" là tùy chọn. Khi tạo tác vụ trên máy chủ sản xuất, chúng ta nên sử dụng hộp này để giới thiệu tác vụ. Hộp thoại sẽ giống như. Click vào nút "Next" để chuyển sang bước tiếp theo

Hình 7 Tạo một tác vụ cơ bản

1. 2. 4 Tạo Trình kích hoạt

Trong hộp thoại "Kích hoạt tác vụ", chọn tùy chọn "Hàng ngày", như minh họa trong. Nếu tần suất bắt buộc, chẳng hạn như Hàng giờ, không có trong danh sách, chúng tôi có thể chọn tùy chọn "Hàng ngày" ngay bây giờ và quay lại để chỉnh sửa trình kích hoạt

Hình 8 Tạo một Trigger

Nhấp vào nút "Tiếp theo" để mở hộp thoại mới để chỉ định ngày và giờ bắt đầu. Đầu tiên, chúng tôi nhập ngày và giờ, như được hiển thị trong. Sau đó, chúng tôi nhấp vào nút "Tiếp theo" để chuyển sang hộp thoại "Hành động"

Hình 9 Chỉ định ngày và giờ bắt đầu để chạy tác vụ

1. 2. 5 Xác định một hành động

Trong hộp thoại "Hành động", chúng tôi chọn tùy chọn "Bắt đầu chương trình", được hiển thị trong. Sau đó, chúng tôi nhấp vào nút "Tiếp theo" để mở hộp thoại mới

Hình 10 Xác định một hành động

Tiêu đề của hộp thoại mới là "Bắt đầu một chương trình", trong đó chúng ta có thể yêu cầu tác vụ chạy chương trình nào. Chúng tôi nhập "C. \pyvirtuals\htmltablescraping\Scripts\python. exe" trong trường "Chương trình/tập lệnh" và nhập "C. \pyapps\htmltablescraping\HTML_Table_Scraping. py" trong trường "Thêm đối số [tùy chọn]". Sau đó, nút "Tiếp theo" sẽ được bật. Hộp thoại sẽ giống như. Chúng tôi nhấp vào nút "Tiếp theo" để hoàn thành định nghĩa hành động

Hình 11 Chỉ định một chương trình để thực hiện tác vụ

1. 2. 6 Hoàn tất việc tạo tác vụ

Sau khi xác định hành động, chúng tôi đến hộp thoại "Tóm tắt". Chọn tùy chọn "Mở hộp thoại Thuộc tính cho tác vụ này khi tôi nhấp vào Kết thúc". Hộp thoại sẽ giống như. Nhấp vào nút "Hoàn tất" để mở hộp thoại "Thuộc tính"

Hình 12 Tóm tắt nhiệm vụ

1. 2. 7 Định cấu hình Bảo mật Tác vụ

Trong phần "Tùy chọn bảo mật" trong hộp thoại "Thuộc tính", chúng tôi chọn tùy chọn "Chạy cho dù người dùng có đăng nhập hay không" và chọn tùy chọn "Chạy với đặc quyền cao nhất". Hộp thoại sẽ giống như

Hình 13 Cấu hình Task Security

Bấm vào nút "OK". Một cửa sổ bật lên, được hiển thị trong , xuất hiện và yêu cầu chúng tôi nhập mật khẩu cho tài khoản người dùng chạy tác vụ

Hình 14 Nhập thông tin tài khoản người dùng để chạy tác vụ này

Nhập mật khẩu và nhấp vào nút "OK" để hoàn tất quá trình tạo tác vụ. Bây giờ chúng ta có thể thấy tác vụ mới trong thư mục "MSSQLTips", như thể hiện trong

Hình 15 Hoàn tất việc tạo một tác vụ theo lịch trình

1. 2. 8 Chạy tác vụ theo cách thủ công

Chọn tác vụ mới và sau đó nhấp vào nút "Chạy" trong ngăn "Hành động". Trạng thái của tác vụ này, được hiển thị trong ngăn ở giữa, thay đổi thành "Đang chạy. " Để đảm bảo tác vụ hoàn tất, chúng ta có thể nhấp vào nút "Làm mới" trong ngăn "Hành động". Khi trạng thái nhiệm vụ thay đổi thành "Sẵn sàng", nhiệm vụ đã hoàn thành

Chúng tôi cũng có thể kiểm tra cột "Kết quả chạy lần cuối" để xác định trạng thái thực thi tập lệnh Python. Giá trị trong cột này cho biết mã trả về. Ví dụ: giá trị "0x1" đại diện cho giá trị thập lục phân 0x80070001 ngụ ý mã trả về 1 từ quá trình thực thi chương trình. Khi chuyển đổi giá trị HEX sang định dạng thập phân, giá trị trả về là 2147942401. Tương tự, giá trị "0x2" đại diện cho HEX 0x80070002 ngụ ý mã trả về phải là 2. Giá trị HEX là 2147942402 ở định dạng thập phân

Chúng tôi lặp lại quy trình nhiều lần và ghi lại các giá trị "Kết quả lần chạy cuối cùng". Sau đó, sau khi quan sát các mã trả về "0x1" và "0x2", chúng tôi chuyển sang tab "Lịch sử" và chọn một sự kiện "Đã hoàn thành hành động" [ID sự kiện. 201], như thể hiện trong. Mã trả về là 2147942401, có nghĩa là chức năng "read_web_page_content[]" không thành công và thoát với mã 1. Tuy nhiên, mặc dù quá trình thực thi Python đưa ra các ngoại lệ, Trình lập lịch tác vụ vẫn coi hành động đó đã hoàn tất thành công. Do đó, không thuận tiện cho chúng tôi trong việc phát hiện các ngoại lệ trong quá trình thực thi Python bằng cách xem lịch sử thực thi tác vụ

Hình 16 Hàm read_web_page_content[] bị lỗi và trả về mã 1

Chuyển sang tab "Chi tiết". Chúng ta có thể xem thông tin chi tiết hơn về nhật ký sự kiện, như được hiển thị trong. Ba thuộc tính này, "TaskName", "ActionName" và "ResultCode" giúp chúng tôi xác định nhật ký sự kiện quan tâm

Hình 17 Chi tiết về nhật ký "Hành động đã hoàn thành" của sự kiện

Chúng ta có thể tìm thấy một nhật ký "Hành động đã hoàn thành" khác trong tab "Lịch sử", trong đó mã trả về là 2147942402. Mã trả về này cho biết hàm "save_html_table_data[]" do người dùng Python xác định đưa ra một ngoại lệ

Hình 18 Hàm save_html_table_data[] đã thoát khỏi chương trình với mã 2

Để các chuyên gia CNTT chú ý đến các lỗi thực thi tập lệnh Python này, chúng tôi sẽ tạo hai tác vụ khác trong thư mục "MSSQLTips". Hai tác vụ này chỉ bắt đầu chạy khi tác vụ "MSSQLTips\Download HTML Table" phát hiện mã trả về lần lượt là 2147942401 và 2147942402

1. 3 Kích hoạt các tác vụ khác dựa trên mã thoát

Trong phần trước, chúng tôi đã tạo trình kích hoạt bắt đầu tác vụ lúc 10. 00 giờ tối mỗi ngày. Chúng tôi gọi trình kích hoạt này là trình kích hoạt dựa trên thời gian. Một loại trình kích hoạt khác là trình kích hoạt dựa trên sự kiện, bắt đầu một hành động sau một sự kiện cụ thể [Dinita, 2021]. Trong phần này, chúng tôi tạo tác vụ thứ hai, "không thể truy cập trang web", bắt đầu chạy khi tác vụ "MSSQLTips\Tải xuống bảng HTML" phát hiện mã trả về 2147942401. Tiếp theo, chúng tôi tạo tác vụ thứ ba, "không thể lưu dữ liệu", bắt đầu chạy khi tác vụ phát hiện mã trả về 2147942402. Do đó, chúng tôi biết trạng thái thực thi tập lệnh Python bằng cách xem quá trình thực thi của hai tác vụ mới này

1. 3. 1 Tạo hai tác vụ cơ bản khác

Ta làm theo các bước ở mục 2. 1 để tạo 2 tác vụ cơ bản là "không truy cập được trang web" và "không lưu được dữ liệu" trong thư mục "Mẹo MSSQL". Thay vì sử dụng "trăn. exe" trong hộp thoại "Bắt đầu chương trình", chúng tôi nhập tên chương trình giả mạo có ý nghĩa, như được hiển thị trong. Hành động sẽ thất bại vì tên chương trình giả mạo không phải là chương trình thực tế. Chúng tôi sử dụng các lỗi từ hai tác vụ này để ám chỉ các ngoại lệ trong quá trình thực thi tập lệnh Python

Hình 19 Sử dụng tên chương trình giả để cố tình làm hỏng tác vụ

Sau khi chúng tôi tạo hai tác vụ mới, sẽ có ba tác vụ trong thư mục "MSSQLTips", như được hiển thị trong

Hình 20 Ba tác vụ trong thư mục MSSQLTips

1. 3. 2 Tạo Trình kích hoạt dựa trên sự kiện

Chọn tác vụ "không thể truy cập trang web" và nhấp vào nút "Thuộc tính" trong ngăn "Hành động" để mở hộp thoại "Thuộc tính". Trong hộp thoại, chuyển sang ngăn "Kích hoạt", như minh họa trong

Hình 21 Trình kích hoạt được sử dụng trong tác vụ này

Nhấp vào nút "Chỉnh sửa…" để mở hộp thoại "Chỉnh sửa Trình kích hoạt". Tiếp theo, chúng tôi chọn "Trên một sự kiện" trong danh sách thả xuống "Bắt đầu tác vụ" và chọn "Tùy chỉnh" trong phần "Cài đặt". Hộp thoại sẽ giống như

Hình 22 Tạo Trigger dựa trên sự kiện

Nhấp vào nút "Bộ lọc sự kiện mới" để mở hộp thoại "Bộ lọc sự kiện mới". Chuyển sang tab "XML" và chọn hộp kiểm "Chỉnh sửa truy vấn theo cách thủ công". Khi hộp thoại có thông báo cảnh báo xuất hiện, chúng tôi nhấp vào nút "Có" để tiếp tục. Sau đó, hộp văn bản có thể chỉnh sửa được. Chúng tôi nhập truy vấn sau vào hộp văn bản. Hộp thoại "Bộ lọc sự kiện mới" sẽ giống như

  
    
      *[System[[EventID=201]]]
        and
      *[EventData[Data[@Name='TaskName'] and [Data='\MSSQLTips\Download HTML Table']]]
        and
      *[EventData[Data[@Name='ActionName'] and [Data='C:\pyvirtuals\htmltablescraping\Scripts\python.exe']]]
        and 
      *[EventData[Data[@Name='ResultCode'] and [Data='2147942401']]]   
    
  

Hình 23 Một bộ lọc sự kiện tùy chỉnh ở dạng XPath

Chúng tôi lần lượt nhấp vào một loạt nút "OK" để đóng hộp thoại và lưu các thay đổi. Bây giờ chúng tôi muốn mã trả về 2147942402 để bắt đầu tác vụ "không lưu được dữ liệu. " Chúng tôi sử dụng các bước tương tự để tạo tác vụ sử dụng trình kích hoạt dựa trên sự kiện. Chúng tôi sử dụng truy vấn sau để xác định bộ lọc sự kiện tùy chỉnh

  
    
      *[System[[EventID=201]]]
        and
      *[EventData[Data[@Name='TaskName'] and [Data='\MSSQLTips\Download HTML Table']]]
        and
      *[EventData[Data[@Name='ActionName'] and [Data='C:\pyvirtuals\htmltablescraping\Scripts\python.exe']]]
        and 
      *[EventData[Data[@Name='ResultCode'] and [Data='2147942402']]]   
    
  
 

1. 3. 3 Chạy tác vụ Tải xuống bảng HTML theo cách thủ công

Chọn tác vụ "Tải xuống bảng HTML" trong ngăn giữa và nhấp vào nút "Chạy" trong ngăn "Hành động". Khi tác vụ hoàn thành, chúng tôi ghi lại giá trị trong cột "Kết quả lần chạy cuối cùng". Chúng tôi lặp lại quy trình nhiều lần cho đến khi bản ghi của chúng tôi có giá trị 0x1 và 0x2

Chọn tác vụ "không thể truy cập trang web", chúng tôi nhận thấy một số lỗi, như trong. Ngoại lệ thực thi tập lệnh Python không trực tiếp tạo ra lỗi, nhưng lỗi cho chúng tôi biết rằng tập lệnh Python không truy cập được trang web

Hình 24 Tác vụ Phát hiện Ngoại lệ trong Python Hàm do người dùng định nghĩa read_web_page_content[]

Chúng tôi cũng thấy một số lỗi khi chọn tác vụ "không thể lưu dữ liệu", được hiển thị trong. Các lỗi thông báo cho chúng tôi rằng tập lệnh Python không lưu được dữ liệu vào bảng cơ sở dữ liệu

Hình 25 Tác vụ phát hiện ngoại lệ trong Python Hàm do người dùng định nghĩa save_html_table_data[]

Hai tác vụ này làm cho các ngoại lệ trong thực thi tập lệnh Python trở nên đáng chú ý đối với các chuyên gia CNTT, những người thường xuyên theo dõi Lịch trình tác vụ. Tuy nhiên, hai tác vụ này không cần thiết để tải dữ liệu HTML vào bảng cơ sở dữ liệu. Bản thân tập lệnh Python sẽ xử lý tất cả các ngoại lệ và thông báo cho người dùng

2 – Kiểm tra trạng thái thực thi Python trong Windows Event Viewer

Windows Event Viewer là một công cụ hữu ích hiển thị nhật ký ứng dụng và thông báo hệ thống bao gồm lỗi, thông báo thông tin và cảnh báo [Hoffman, 2018]. Công cụ phân loại nhật ký sự kiện thành bốn nhóm chính, tôi. e. , "Chế độ xem tùy chỉnh", "Nhật ký Windows", "Nhật ký ứng dụng và dịch vụ" và "Đăng ký. " Bên cạnh việc sử dụng Trình lập lịch tác vụ để kiểm tra trạng thái thực thi tập lệnh Python, chúng tôi sử dụng Windows Event Viewer để truy cập lịch sử thực thi tác vụ trong phần này

2. 1 Xem Nhật ký Trình lập lịch tác vụ

Nhật ký Trình lập lịch tác vụ nằm trong nhóm chính "Nhật ký Ứng dụng và Dịch vụ". Chúng tôi đã tạo nhiệm vụ "Tải xuống bảng HTML" trong Phần 1. 2. Chúng tôi có thể tìm thấy các bản ghi cho nhiệm vụ này trong thư mục con này. "Nhật ký ứng dụng và dịch vụ -> Microsoft -> Windows -> TaskScheduler -> Hoạt động. " Tuy nhiên, không thuận tiện khi xem nhật ký qua đường dẫn này

2. 1. 1 Khởi chạy Trình xem sự kiện Windows

Chúng tôi sử dụng phím tắt "Windows + R" để khởi chạy cửa sổ lệnh "Run". Sau đó, chúng tôi nhập "eventvwr. msc" trong hộp "Mở". Cuối cùng, nhấp vào nút "OK" để khởi chạy Trình xem sự kiện Windows, trông giống như

Hình 26 Khởi chạy Window Event Viewer

2. 1. 2 Điều hướng đến Nhật ký Trình lập lịch tác vụ

Mở rộng thư mục "Nhật ký ứng dụng và dịch vụ" trong ngăn bên trái. Chúng tôi đi theo con đường này để mở rộng các thư mục con. "Nhật ký ứng dụng và dịch vụ -> Microsoft -> Windows -> TaskScheduler. " Tiếp theo, trong thư mục con "TaskScheduler", chúng tôi nhấp vào nút "Hoạt động". Chúng tôi thấy một danh sách đầy đủ các bản ghi sự kiện trong ngăn "Hoạt động". Ví dụ: chúng tôi có thể tìm thấy nhật ký cho tác vụ đã lên lịch mà chúng tôi đã bắt đầu theo cách thủ công, được hiển thị trong

Hình 27 Điều hướng đến Nhật ký lập lịch tác vụ

Không thuận tiện để xem nhật ký theo cách này. Do đó, phần sau đây tạo chế độ xem sự kiện tùy chỉnh để loại trừ tất cả nhật ký không quan tâm và chỉ hiển thị thông tin cụ thể

2. 2 Xem Nhật ký tác vụ bảng HTML tải xuống thông qua Chế độ xem sự kiện tùy chỉnh

Chế độ xem tùy chỉnh cho phép chúng tôi xem các tin nhắn mà chúng tôi quan tâm [Buckell, 2018]. Ví dụ: chúng tôi muốn xem nhật ký từ tác vụ "Tải xuống bảng HTML" với mã trả về 1. Trong trường hợp này, chúng tôi không cần tìm các nhật ký cụ thể này từ tất cả các nhật ký trong danh sách "Hoạt động"

2. 2. 1 Tạo Chế độ xem tùy chỉnh

Chọn "Chế độ xem tùy chỉnh" ở khung bên trái. Sau đó, trên ngăn "Hành động", nhấp vào nút "Tạo chế độ xem tùy chỉnh…". Một hộp thoại sẽ xuất hiện, như thể hiện trong

Hình 28 Hộp thoại Tạo Chế độ xem Tùy chỉnh

Chuyển sang tab "XML" và chọn "Chỉnh sửa truy vấn theo cách thủ công. " Một thông báo cảnh báo xuất hiện, như được minh họa trong

Hình 29 Một thông điệp cảnh báo từ Event Viewer

Nhấp vào nút "Có" để tiếp tục. Sau đó, hộp văn bản có thể chỉnh sửa được. Chúng tôi sao chép truy vấn đầu tiên trong Phần 1. 3. 2 vào hộp văn bản. Hộp thoại sẽ giống như. Khi sử dụng tính năng lọc XML, chúng tôi có thể sử dụng chế độ xem tùy chỉnh để xem chi tiết nhật ký sự kiện và chỉ hiển thị thông tin chúng tôi cần [Pyle, 2019]

Hình 30 Tạo một Custom View cho Return Code 1

Nhấp vào nút "OK" để đảm bảo thay đổi và hộp thoại mới hiển thị để hỏi thêm thông tin về chế độ xem tùy chỉnh này. Chúng tôi nhập văn bản "không thể truy cập trang web" làm tên của chế độ xem này và nhấp vào nút "Thư mục mới". Chúng tôi đặt tên cho thư mục mới là "MSSQLTips", như trong. Bấm vào nút "OK" để lưu tên thư mục. Sau đó, nhấp vào nút "OK" để đóng hộp thoại "Lưu bộ lọc vào chế độ xem tùy chỉnh"

Hình 31 Tạo một thư mục mới cho Custom View

2. 2. 2 Xem Nhật ký cụ thể trong Chế độ xem tùy chỉnh

Sau khi chúng tôi đóng hộp thoại "Lưu bộ lọc vào chế độ xem tùy chỉnh", chúng tôi quay lại cửa sổ "Trình xem sự kiện". Tiếp theo, chúng tôi chọn chế độ xem tùy chỉnh mới để hiển thị nhật ký quan tâm, như được hiển thị trong

Hình 32 Xem Nhật ký "không truy cập được trang web" trong Chế độ xem tùy chỉnh

Chúng tôi lặp lại các bước để tạo một chế độ xem tùy chỉnh khác "không thể lưu dữ liệu. " Chúng tôi sử dụng truy vấn thứ hai trong Phần 1. 3. 2 để tạo bộ lọc trong quá trình này. Lưu ý rằng chúng ta nên chọn thư mục "MSSQLTips" khi lưu bộ lọc vào chế độ xem tùy chỉnh. Sau khi chúng tôi tạo hai chế độ xem tùy chỉnh, cửa sổ "Trình xem sự kiện" sẽ giống như

Hình 33 Xem Nhật ký "không thể lưu dữ liệu" trong Chế độ xem tùy chỉnh

3 – Tự động hóa tập lệnh Python bằng Trình lập lịch tác vụ

Chúng tôi đã tạo một tác vụ cơ bản có trình kích hoạt dựa trên thời gian. Tác vụ chạy tập lệnh Python lúc 10. 00 giờ tối mỗi ngày. Tập lệnh Python luôn đưa ra một ngoại lệ trong thời gian chạy cho mục đích thử nghiệm. Chúng tôi đã bắt đầu nhiệm vụ theo cách thủ công trong giai đoạn phát triển. Chúng tôi đã xem trạng thái thực thi tập lệnh Python thông qua tab lịch sử tác vụ trong bộ lập lịch tác vụ và chế độ xem tùy chỉnh trong trình xem sự kiện. Để đảm bảo giải pháp hoạt động trên máy chủ sản xuất, chúng tôi đăng xuất khỏi máy phát triển và để bộ lập lịch tác vụ chạy tập lệnh Python. Sau khi bộ lập lịch tác vụ đã thực thi tập lệnh nhiều lần, chúng tôi đăng nhập vào máy phát triển để kiểm tra nhật ký thực thi

3. 1 Xem lịch sử lập lịch tác vụ

Chúng ta khởi động Windows Task Scheduler bằng cách làm theo các bước trong Phần 1. 2. 1. Sau đó, chúng tôi mở rộng thư mục "Thư viện lập lịch tác vụ" để tìm thư mục "MSSQLTips". Tiếp theo, nhấp vào thư mục "MSSQLTips" để hiển thị danh sách các tác vụ. Sau đó, chúng tôi chọn tác vụ "không truy cập được trang web". Sau đó, nhấp vào nút "Lịch sử" để mở tab lịch sử, được hiển thị trong. Chúng tôi tìm thấy lỗi xảy ra ở 10. 00 PM ngày 21-12-2012. Các lỗi này cho biết tập lệnh Python không truy cập được trang web vào thời gian đã lên lịch. Thông qua cách tiếp cận này, chúng ta biết ngay trạng thái thực thi tập lệnh Python. Sau đó, chúng tôi có thể báo cáo lỗi cho nhóm hỗ trợ kỹ thuật

Hình 34 Xem dữ liệu lịch sử của tác vụ "không truy cập được trang web"

Tiếp theo, chúng ta chọn tác vụ "không lưu được dữ liệu". Nhấp lại vào nút "Lịch sử" để mở tab lịch sử, được hiển thị trong. Các lỗi chỉ ra rằng tập lệnh Python không thể lưu dữ liệu vào ngày 2021-12-19 và 2021-12-20. Điều đáng chú ý là các lỗi không phải do thực thi tập lệnh Python trực tiếp gây ra. Thông báo trong tab chung không giúp khắc phục sự cố. Thay vào đó, để khắc phục lỗi, chúng ta nên dựa vào nhật ký được viết bởi các tập lệnh Python

Hình 35 Xem dữ liệu lịch sử của Tác vụ "không lưu được dữ liệu"

3. 2 Kiểm tra Chế độ xem sự kiện tùy chỉnh

Một số chuyên gia CNTT có thể thích sử dụng Windows Event Viewer để kiểm tra Windows và nhật ký ứng dụng. Để thực hiện việc này, trước tiên chúng tôi khởi chạy trình xem sự kiện bằng cách thực hiện theo các bước trong Phần 2. 1. 1. Sau đó, chúng tôi mở rộng thư mục "Chế độ xem tùy chỉnh" để tìm thư mục con "MSSQLTips". Có hai chế độ xem tùy chỉnh trong thư mục "MSSQLTips"

Chọn chế độ xem đầu tiên "không thể truy cập trang web", chúng ta có thể thấy danh sách các sự kiện, như được hiển thị trong. Chế độ xem hiển thị tất cả các sự kiện đã trả về mã 1 từ quá trình thực thi tập lệnh Python. Hàm do người dùng định nghĩa "read_web_page_content[]" thoát khỏi chương trình với mã 1 khi hàm không truy cập được trang web. Do đó, tất cả các sự kiện trong chế độ xem này ngụ ý lỗi trong chức năng do người dùng xác định này. Ví dụ, chúng ta có thể quan sát một sự cố xảy ra ở 10. 00 CH ngày 21-12-2021

Hình 36 Chế độ xem tùy chỉnh "không thể truy cập trang web"

Chọn chế độ xem thứ hai "không lưu được dữ liệu" để mở một chế độ xem tùy chỉnh khác, như minh họa trong. Tất cả các sự kiện này đã trả về mã 2 từ quá trình thực thi tập lệnh Python. Hàm do người dùng định nghĩa "save_html_table_data[]" thoát khỏi chương trình với mã 2 khi hàm không lưu dữ liệu vào bảng cơ sở dữ liệu. Do đó, tất cả các sự kiện trong chế độ xem này ngụ ý lỗi trong chức năng do người dùng xác định này. Ví dụ, chúng ta có thể quan sát một sự cố xảy ra ở 10. 00 PM ngày 2021-12-19 và 2021-12-20

Hình 37 Chế độ xem tùy chỉnh "không thể lưu dữ liệu"

Bản tóm tắt

Vì Python dễ học và dễ đọc nên nhiều chuyên gia CNTT sử dụng Python để thực hiện các công việc thường ngày. Bộ lập lịch tác vụ Windows là một công cụ có thể thực thi chương trình tại một thời điểm được xác định trước. Ngoài ra, Windows Event Viewer có thể hiển thị thông tin chi tiết về các sự kiện quan trọng trên hệ thống Windows. Những công cụ này cho phép chúng tôi tự động hóa các tập lệnh Python để thực hiện các tác vụ thông thường và kiểm tra trạng thái thực thi. Bài viết này giới thiệu cách chạy tập lệnh Python thông qua Windows Task Scheduler và xem lịch sử thực thi tập lệnh Python thông qua Windows Event Viewer

Chúng tôi đã bắt đầu với phần giới thiệu nhẹ nhàng về cách tạo một tác vụ tự động trong Windows Task Scheduler. Sau đó, chúng tôi đã tạo hai tác vụ dựa trên sự kiện chạy khi tác vụ tự động có mã trả về, 1 hoặc 2. Sau đó, chúng tôi đã chạy tác vụ tự động theo cách thủ công và kiểm tra trạng thái thực thi tập lệnh Python thông qua hai tác vụ dựa trên sự kiện

Tiếp theo, chúng tôi đã tạo hai chế độ xem tùy chỉnh trong Windows Event Viewer. Sau đó, chúng tôi đã sử dụng hai chế độ xem tùy chỉnh này để xem trạng thái thực thi tập lệnh Python

Cuối cùng, chúng tôi để Trình lập lịch tác vụ tự động chạy tập lệnh Python. Sau đó, chúng tôi đã xem trạng thái thực thi tập lệnh Python thông qua tab lịch sử tác vụ trong Trình lập lịch tác vụ cửa sổ và chế độ xem tùy chỉnh trong Trình xem tác vụ Windows

Thẩm quyền giải quyết

Buckell, F. [2018]. Chế độ xem tùy chỉnh trong Windows Event Viewer là gì và cách tạo một chế độ xem tùy chỉnh. https. //www. maketech dễ dàng hơn. com/windows-custom-views-event-viewer/

Dinita, M. [2021]. Cách lên lịch tác vụ trong Windows 10. https. // cửa sổ báo cáo. com/schedule-tasks-windows-10/

Hoffman, C. [2018]. Windows Event Viewer là gì và tôi có thể sử dụng nó như thế nào?. https. //www. làm thế nào để đam mê. com/123646/htg-explains-what-the-windows-event-viewer-is-and-how-you-can-use-it/

Huculak, M. [2019]. Cách tạo tác vụ tự động bằng Task Scheduler trên Windows 10. https. //www. cửa sổ trung tâm. com/how-create-automated-task-using-task-scheduler-windows-10/

Nam Định, C. [2018]. 9 cách khởi động Task Scheduler trong Windows [mọi phiên bản]. https. //www. công dân kỹ thuật số. cuộc sống/cách-bắt đầu-tác vụ-lập lịch-windows/

Pyle, N. [2019]. Lọc XML nâng cao trong Windows Event Viewer. https. //cộng đồng công nghệ. Microsoft. com/t5/ask-the-directory-services-team/advanced-xml-filtering-in-the-windows-event-viewer/ba-p/399761

Roe, A. Đ. [2020]. 6 cách mở cửa sổ lệnh Run trong Windows. https. //www. công dân kỹ thuật số. life/run-window-windows-7-why-use-it-anymore/

Zhou, N. [2021]. Tạo công việc tác nhân máy chủ SQL để chạy tập lệnh Python trong môi trường ảo. https. //www. mssqltips. com/sqlservertip/7083/run-python-scripts-sql-server-agent-job/

Làm cách nào để chạy môi trường ảo Python trong cmd?

Việc tạo môi trường ảo được thực hiện bằng cách thực hiện lệnh venv. .
python3 -m venv/đường dẫn/đến/mới/ảo/môi trường
c. \>c. \Python35\python -m venv c. \path\to\myenv
c. \>python -m venv c. \path\to\myenv

Làm cách nào để sử dụng env ảo trong Python?

Thay đổi Dấu nhắc Lệnh
Ghi đè môi trường hiện có
Tạo nhiều môi trường ảo cùng một lúc
Cập nhật các phụ thuộc cốt lõi
Tránh cài đặt pip
Bao gồm các gói trang web hệ thống
Sao chép hoặc liên kết tệp thực thi của bạn
Nâng cấp Python của bạn để phù hợp với Python hệ thống

Làm cách nào để thiết lập môi trường ảo Python trong Windows?

Tạo Môi trường ảo bằng Conda .
Bước 1. Mở dấu nhắc Anaconda. .
Bước 2. Kiểm tra Conda được cài đặt trong đường dẫn của bạn. .
Bước 3. Kiểm tra xem Conda có được cập nhật không. .
Bước 4. Tạo môi trường ảo. .
Bước 5. Kích hoạt môi trường. .
Bước 6. Vô hiệu hóa môi trường trên sau khi công việc của bạn hoàn thành

Chủ Đề