Làm thế nào để bạn khởi động lại một tập tin trong python?

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 datetime
path_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ố 8

Khở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

7 câu trả lời

1

Devendra Kavthekar

18 Tháng tư 2018

Câu trả lời hay nhất

Bạ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ất

Xin 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ất

Mã 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ất

Bạ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.

Khởi động lại có nghĩa là gì trên Python?

BẮT ĐẦU LẠI. Phần thông báo IDLE tự khởi động lại bên trong trước khi thực hiện chương trình của bạn , do đó xóa tất cả thông tin ở trên để các biến từ các chương trình trước đó không gây rối cho chương trình của bạn.

Tại sao vỏ Python nói khởi động lại?

Thông báo chỉ cho bạn biết rằng tập lệnh của bạn đã được khởi động lại .

Chủ Đề