Có một số cách bạn có thể chạy chương trình của mình dưới dạng dịch vụ nền trong Linux, chẳng hạn như crontab,. bashrc, v.v. nhưng hôm nay tôi sẽ viết về systemd. Ban đầu, tôi đang tìm cách chạy tập lệnh python của mình dưới dạng dịch vụ nền, vì vậy ngay cả khi máy chủ khởi động lại vì lý do nào đó, tập lệnh của tôi sẽ chạy trong nền bất kể và tôi thấy rằng systemd cho phép tôi làm điều đó. Bắt đầu nào
Tôi sẽ thiết lập tính năng này trên Ubuntu 18. 10 máy
Hầu như tất cả các phiên bản Linux đều đi kèm với systemd, nhưng nếu phiên bản của bạn không đi kèm với nó thì bạn chỉ cần chạy lệnh sau
sudo apt-get install -y systemd
Ghi chú. Cờ -y có nghĩa là cài đặt các gói và phụ thuộc một cách nhanh chóng
Để kiểm tra phiên bản nào của systemd, bạn chỉ cần chạy lệnh
systemd --version
Tạo một tệp python bất cứ thứ gì bạn thích. Tôi sẽ gọi bài kiểm tra của tôi. py
kiểm tra sudo nano. py
import time
from datetime import datetime
while True:
with open["timestamp.txt", "a"] as f:
f.write["The current timestamp is: " + str[datetime.now[]]]
f.close[]
time.sleep[10]
Đoạn script trên sẽ ghi dấu thời gian hiện tại vào tệp sau mỗi 10 giây. Hãy viết dịch vụ ngay bây giờ
Sudo nano /etc/systemd/system/test. dịch vụ [tên của dịch vụ được kiểm tra trong trường hợp này]
[Unit]
Description=My test service
After=multi-user.target[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /home//test.py[Install]
WantedBy=multi-user.target
Insert the username in your OS where is written. The ExecStart flag takes in the command that you want to run. So basically the first argument is the python path [in my case it’s python3] and the second argument is the path to the script that needs to be executed. Restart flag is set to always because I want to restart my service if the server gets restarted. For more information on this, you can go to this link. Now we need to reload the daemon.
sudo systemctl daemon-reload
Hãy kích hoạt dịch vụ của chúng tôi để nó không bị vô hiệu hóa nếu máy chủ khởi động lại
sudo systemctl enable test.service
Và bây giờ hãy bắt đầu dịch vụ của chúng tôi
sudo systemctl start test.service
Bây giờ dịch vụ của chúng tôi đã hoạt động
Ghi chú. Tệp sẽ được ghi trong thư mục gốc [/] vì chương trình sẽ ghi trong đường dẫn theo quan điểm của systemd. Để thay đổi điều đó, chỉ cần chỉnh sửa đường dẫn tệp. Ví dụ
import time
from datetime import datetimepath_to_file = "enter the desired path of the file"while True:
with open[path_to_file, "a"] as f:
f.write["The current timestamp is: " + str[datetime.now[]]]
f.close[]
time.sleep[10]
Có một số lệnh bạn có thể thực hiện để bắt đầu, dừng, khởi động lại và kiểm tra trạng thái
Để dừng dịch vụ
________số 8Khởi động lại
sudo systemctl restart name_of_your_service
Để kiểm tra trạng thái
systemd --version
0Đây là phần giới thiệu rất cơ bản về systemd dành cho những người mới bắt đầu muốn bắt đầu viết các dịch vụ systemd của riêng họ cho python. Nếu bạn muốn tìm hiểu sâu về systemd và systemctl, đây là hướng dẫn chi tiết của digital ocean
GHI CHÚ. Điều này không chỉ áp dụng cho tập lệnh python. Về cơ bản, bạn có thể chạy bất kỳ chương trình nào với điều này bất kể ngôn ngữ lập trình mà chương trình của bạn được viết bằng
Tôi có một câu hỏi rất cơ bản là tại sao cần khởi động lại odoo khi thực hiện một số thay đổi trong tệp python. Tôi đã đọc https này. //www. odoo. com/forum/help-1/question/is-there-a-need-to-restart-openerp-server-when-we-update-a-custom-module-52293 và nó nói khởi động lại là bắt buộc nhưng không
Trên một máy chủ đang chạy nếu tôi có thể di chuyển một mô-đun đến đường dẫn addons và cài đặt nó [không cần khởi động lại máy chủ], tại sao tôi không thể sửa đổi tệp python và nâng cấp mô-đun
Và nếu python được giải thích tại sao tôi cần khởi động lại?
Ngoài ra, tôi thậm chí đã thử xóa thư mục pycache để xem liệu điều đó có hạn chế trình thông dịch tiếp tục biên dịch nó hay không, nhưng nó không giúp được gì
Và tôi rất rõ ràng rằng việc nâng cấp mô-đun là bắt buộc nếu chúng tôi sửa đổi các tệp xml. Không cần giải thích thêm về cùng một. . ]
Trong khi đó, tôi đang cố gắng khám phá xem liệu tôi có thể sửa đổi các tệp python và thông báo cho odoo bằng cách nào đó ngoài việc khởi động lại nó hay không. Cảm ơn trước vì đã làm rõ cho tôi
Chia sẻ
1 Nhận xét
đăng bình luận
Niyas Raphy [Giải pháp phần mềm Walnut]
- 12 tháng 10 năm 2019
Xóa bỏ
Chuyển đổi thành câu trả lời
Để Định cấu hình cơ quan giám sát với Odoo để tự động khởi động lại dịch vụ odoo, hãy xem phần này. https. //www. youtube. com/watch?v=SKwl_pSBy9c
1
Devendra Kavthekar
18 Tháng tư 2018
Câu trả lời hay nhấtBạn sẽ cần cài đặt cơ quan giám sát để tùy chọn tự động tải lại hoạt động. Cơ quan giám sát có sẵn trên linux. Vì vậy, bất cứ khi nào bạn lưu các thay đổi đối với bất kỳ tệp nào đang theo dõi, máy chủ sẽ tự động khởi động lại
e. g. Bạn có thể xem ở đây
https. //www. ảnh chụp màn hình tuyệt vời. com/hình ảnh/3303625/d6a4656e3d85fa5cd797e6efdfe23619
Nhận xét Chia sẻ
2 Nhận xét
đăng bình luận
vivek
- 18 tháng 4 năm 2018
Xóa bỏ
Chuyển đổi thành câu trả lời
Cảm ơn Devendran. Nó có hoạt động cho mac không?
Devendra Kavthekar
- 18 tháng 4 năm 2018
Xóa bỏ
Chuyển đổi thành câu trả lời
Có, nó hoạt động cho Mac, bạn có thể xem tại đây. https. //pythonhosted. org/cơ quan giám sát/cài đặt. html
0
Guillermo Martinez
7 Tháng mười hai 2018
Câu trả lời hay nhấtXin chào mọi người, --dev tải lại công việc với doanh nghiệp?
Nhận xét Chia sẻ
đăng bình luận
0
cá đuối
6 Tháng tư 2018
Câu trả lời hay nhấtMã Python được biên dịch, sau đó được giải thích
Python tự động biên dịch tập lệnh của bạn thành mã được biên dịch, một. pyc, trước khi chạy nó
Khi một mô-đun MỚI được thêm và nhìn thấy lần đầu tiên hoặc khi nguồn gần đây hơn tệp được biên dịch hiện tại, một. pyc chứa mã đã biên dịch sẽ được tạo trong cùng thư mục với. tập tin py. Đây là lý do tại sao một addon mới có thể được sao chép và cài đặt mà không cần khởi động lại
Sau khi biên dịch, các tệp nguồn không được Máy chủ sử dụng
Sử dụng tùy chọn tải lại --dev để tự động khởi động lại sau khi thay đổi TRONG KHI PHÁT TRIỂN
https. //www. odoo. com/tài liệu/11. 0/tham chiếu/cmdline. html
Nhận xét Chia sẻ
1 Nhận xét
đăng bình luận
vivek
- 7 tháng 4 năm 2018
Xóa bỏ
Chuyển đổi thành câu trả lời
Cảm ơn Ray Carnes, nhưng --dev tùy chọn tải lại không giúp tôi trong pycharm. Bạn có thể vui lòng cho tôi biết những gì tôi bỏ lỡ?
-1
Ajepe Babatope
6 Tháng tư 2018
Câu trả lời hay nhấtBạn cần phải khởi động lại Odoo nếu bạn chỉ làm việc với các tệp Python và đây không chỉ là nội dung "Odooish", nó phổ biến đối với tất cả ứng dụng python Django, Flask, Pyramid, v.v.