Chạy tập lệnh python từ nút js bằng phương thức sinh sản tiến trình con

Trong bài viết này, tôi sẽ giới thiệu một ứng dụng mẫu có thể chạy tập lệnh python từ Node. js, lấy dữ liệu từ tập lệnh và gửi tới trình duyệt

Với ít tìm kiếm tại npm, bạn sẽ tìm thấy một số lib để chạy các tập lệnh python nhưng tôi thích gắn bó với nút hơn. xây dựng js trong child_ process

Một ngày nọ, bạn nảy ra một ý tưởng tuyệt vời cho dự án của mình bằng cách sử dụng các thư viện thú vị trong Python. Nhưng bạn không biết cách tích hợp nó với Node hiện tại của mình. máy chủ js. Đừng lo lắng. Hôm nay mình sẽ hướng dẫn các bạn cách đọc Python scripts từ Node. js một cách dễ dàng và cung cấp cho bạn hướng dẫn triển khai từng bước để bạn có thể tiết kiệm thời gian cho các tác vụ quan trọng hơn sau này

Để làm cho nó dễ dàng, tôi sẽ sử dụng Glitch để chứng minh cách bạn có thể làm cho nó hoạt động nhưng hãy thoải mái áp dụng nó trên các nền tảng khác mà bạn thích

Đầu tiên, chúng ta cần tạo một máy chủ. js làm máy chủ cho ứng dụng của chúng tôi

máy chủ của bạn. tập tin js

Ý tưởng ở đây rất đơn giản, bạn gọi tập lệnh Python của mình từ Node. js sử dụng Child Process và spawn[] [Bạn không cần biết trước chúng là gì]. Sau đó nút. js sẽ lưu trữ đầu ra của tập lệnh Python của bạn và bạn có thể làm bất cứ điều gì bạn muốn với biến sau đó. Do đó, chúng tôi sẽ cần thêm một phương thức POST mới để chạy tập lệnh Python của chúng tôi khi biểu mẫu được gửi ở phía máy khách

Thêm một phương thức POST mới để đọc tập lệnh Python

Dưới đây là một số quy trình mà bạn cần biết

  1. Trong phần khai báo của biến python, 'python3' là phiên bản python được yêu cầu để chạy các thư viện của bạn trong tập lệnh python của bạn. Thông thường, python là đủ. Tuy nhiên, nếu xảy ra lỗi. cannot import [your libraries] ngay cả khi bạn đã cài đặt chúng, thì bạn nên cân nhắc sử dụng python3 và cài đặt lại thư viện của mình bằng cách sử dụng pip3

  2. stderr sẽ trả lại [các] lỗi của tập lệnh Python [nếu tồn tại] cho bảng điều khiển của bạn để bạn có thể sửa bất kỳ lỗi nào trước khi chuyển sang phần tiếp theo

Một ví dụ về lỗi stderr

  1. Khi kịch bản của bạn. py đã chạy thành công mà không có lỗi, đầu ra của tập lệnh Python của bạn sẽ được lưu trữ trong biến dataToSend và máy chủ sẽ trả về dòng child process exited with code 0. Sau đó, bạn có thể sử dụng biến đầu ra trong Node. js để làm bất cứ điều gì bạn muốn

Bây giờ, giả sử bạn có một kịch bản. py in Hello World ra bàn điều khiển

kịch bản của bạn. mã py

Lưu ý rằng sys là mô-đun cho phép Python đọc các tham số từ Nút của bạn. js, chúng ta sẽ truyền tham số từ máy chủ sang Python trong các ví dụ tiếp theo. Nếu không có gì sai xảy ra, bạn sẽ nhận được thông báo này từ bảng điều khiển sau khi chạy tập lệnh của mình. py sử dụng Nút. js. child process exited with code 0, Hello World!

Sau đó, hãy xem cách chúng ta có thể chuyển một hoặc nhiều tham số vào tập lệnh. py từ máy chủ của chúng tôi. Chỉ cần thêm một số biến mới bên cạnh đường dẫn tập lệnh của bạn trong máy chủ. js và Python sẽ tự động hiểu đây là các tham số và đọc chúng theo thứ tự bằng cách sử dụng 'python3'0 [đó là lý do tại sao chúng ta cần 'python3'1 sớm hơn]

Cập nhật máy chủ của bạn. js

Bây giờ, giả sử chúng ta muốn nói “Xin chào” + tên của người đó dưới dạng tham số từ Node. máy chủ js. Chúng tôi sẽ chỉnh sửa mã nguồn Python như sau

Kịch bản mới của bạn. py

Đây là những gì chúng ta sẽ nhận được sau khi chạy mã thành công. 'python3'2

Xin chúc mừng, bạn đã học cách truyền tham số từ Node. js vào tệp Python. Bạn có thể thêm nhiều tham số hơn nữa và tăng chỉ số của 'python3'3 để nhận các giá trị mới

Cuối cùng, tôi sẽ chỉ cho bạn một thủ thuật nhỏ mà chưa ai nói với bạn để Node của bạn. js chỉ đọc một phần cần thiết trong mã Python của bạn thay vì toàn bộ tệp. Thủ thuật đó là… gọi các chức năng từ máy chủ của bạn dưới dạng tham số

Giả sử bạn muốn chào một người theo ba cách khác nhau thay vì chỉ nói “xin chào”. Để làm như vậy, chỉ cần tạo một hàm cho từng kiểu chào và chuyển tên của hàm làm tham số đầu tiên trong máy chủ của bạn. Bằng cách sử dụng phương pháp này, **bạn không cần tạo nhiều tệp Python **và các phương thức POST khác nhau để nhận các giá trị mà bạn muốn cho ứng dụng web của mình

Tạo các chức năng trong tập lệnh của bạn. py

Như bạn có thể thấy, khi chúng ta gọi script. py từ máy chủ. js bây giờ, nó sẽ chỉ chạy chức năng mà bạn chuyển qua làm tham số đầu tiên từ Node. js. Do đó, phương pháp này sẽ **giúp bạn tổ chức tập lệnh Python của mình tốt hơn **và chỉ sử dụng các tài nguyên mà bạn cần

Sau đó, điều cuối cùng bạn cần làm là thay đổi khai báo của biến python trong máy chủ. js để

'python3'4

Đó là nó

Bạn đã làm được một công việc tuyệt vời. Khi chương trình chạy thành công, bạn sẽ mong đợi kết quả này. 'python3'5

Đây là GUI cho những gì chúng tôi đã làm ở trên. https. // trục trặc. com/~nodewithpython

Để truy cập mã đầy đủ, nhấp vào liên kết

Nếu bạn có bất kỳ thắc mắc nào hoặc không thể sửa lỗi khi làm theo hướng dẫn của tôi, bạn có thể trao đổi trực tiếp với tôi bằng cách để lại bình luận bên dưới. Tôi sẽ cố gắng giúp đỡ ngay khi có thể

Làm cách nào để chạy tập lệnh Python từ nodejs?

Cách chạy tập lệnh Python từ nút. .
Chạy một tập lệnh python đơn giản. Tạo một thư mục mới. nút mkdirPythonApp. .
Gửi tham số tới tập lệnh python. Hầu hết thời gian, các tập lệnh python yêu cầu truyền một số tham số. .
Nhận tập dữ liệu JSON từ python

Phương thức spawn[] trong nút JS là gì?

đẻ trứng[]. Hàm spawn khởi chạy một lệnh trong một quy trình mới và bạn có thể sử dụng nó để chuyển bất kỳ đối số nào cho lệnh đó . Đó là chức năng sinh sản chung nhất và tất cả các chức năng khác được xây dựng trên đó [docs]. con_tiến trình. execFile[]. Hàm execFile tương tự như child_ process.

Khi nào bạn sẽ sử dụng child_ process trong nút JS?

Thông thường, Nút. js cho phép hiệu năng đơn luồng, không chặn nhưng chạy một luồng đơn lẻ trong CPU không thể xử lý khối lượng công việc ngày càng tăng, do đó có thể sử dụng mô-đun child_process để sinh ra các tiến trình con. The child processes communicate with each other using a built-in messaging system.

Sự khác biệt giữa fork và spawn từ child_ process là gì?

Phương thức đẻ trứng []. Quá trình sinh sản bắt đầu một lệnh trong một quy trình mới. . Sự khác biệt giữa tiến trình con Spawn và Fork

Chủ Đề