làm cách nào để gọi tập lệnh python từ crontab yêu cầu sử dụng kích hoạt (nguồn env/bin/active)?Gọi tập lệnh python từ crontab bằng cách kích hoạt
Trả lời
tập lệnh kích hoạt của virtualenv khá đơn giản. Nó chủ yếu đặt đường dẫn đến trình thông dịch Python của virtualenv của bạn; những thứ khác mà nó làm (thiết lập PS1
, lưu các biến cũ, v.v.) không thực sự cần thiết nếu bạn không ở trong một trình bao tương tác. Vì vậy, cách đơn giản nhất là chỉ để khởi động kịch bản Python của bạn với trình thông dịch Python đúng, có thể được thực hiện theo một trong hai cách sau:
1. Thiết lập kịch bản Python của bạn để sử dụng Python thông dịch viên của virtualenv bạn
giả sử thông dịch viên của virtualenv của bạn đang ở ~/virtualenv/bin/python
, bạn có thể đặt con đường mà ở phía trên cùng của kịch bản Python của bạn:
#!/home/user/virtualenv/bin/python
Và sau đó khởi động kịch bản của bạn từ crontab của bạn, như bình thường.
2. Khởi chạy kịch bản với trình thông dịch Python thích hợp trong cronjob của bạn
Giả sử kịch bản của bạn là ở ~/bin/cronjob
và Python thông dịch viên của virtualenv của bạn đang ở ~/virtualenv/python
, bạn có thể đặt điều này trong crontab của bạn:
* * * * * /home/user/virtualenv/python /home/user/bin/crontab
Cách tiếp cận của tôi là luôn giữ crontab càng đơn giản càng tốt và xử lý tất cả các cấu hình bên trong tập lệnh được gọi là crontab.
1) Tạo một kịch bản shell: ví dụ /var/webapp/cron.sh
#!/bin/sh
PATH="/var/webapp/.env/bin:$PATH"
export PATH
cd /var/webapp/
python test.py
nơi /var/webapp/.env/bin là vị trí virtualenv. Đặt PATH, bạn không cần chạy nguồn ../activate
2) Đặt đúng môi trường của bạn. Ví dụ, đối với một ứng dụng Django:
#!/usr/bin/env python
import os
from datetime import datetime
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.production'
os.environ['DJANGO_CONF'] = 'settings.production'
from util.models import Schedule
dset = Schedule.objects.all()
for rec in dset:
print rec
print 'cron executed %s' % datetime.today()
On ví dụ này, cài đặt django đang nằm trên các thiết lập/production.py
3) Cuối cùng, chỉnh sửa/etc/crontab. Ví dụ: để thực thi sau mỗi nửa giờ, mỗi ngày:
1,31 * * * * root /var/webapp/cron.sh >> /var/webapp/cron.log
Lưu ý rằng việc tạo nhật ký để giúp bạn tìm lỗi hoặc gỡ lỗi thư là rất quan trọng.
- 1. Crontab không thực thi được tập lệnh Python
- 2. Crontab không chạy tập lệnh python của tôi
- 3. Gọi hàm Python từ tập lệnh shell
- 4. Kích hoạt thông báo KDE 4 từ tập lệnh bash
- 5. Gọi exiftool từ tập lệnh python?
- 6. Làm cách nào để xác định xem tập lệnh python được thực thi từ crontab?
- 7. Không thể nhập mô-đun Python MySQL khi chạy tập lệnh bằng crontab
- 8. Gọi tập lệnh Perl từ Python
- 9. Phụ thêm vào crontab bằng tập lệnh shell trên Ubuntu
- 10. Python Script không chạy trong crontab gọi pysaunter
- 11. cách gọi/chạy nhiều tập lệnh python từ tập tin batch trong cửa sổ xp/7
- 12. Chạy tập lệnh Python từ ứng dụng Cocoa bằng GCD
- 13. Thực thi python Script trên Crontab
- 14. Detect nếu python script được chạy từ giao diện điều khiển hoặc bằng crontab
- 15. Gửi tệp bằng POST từ tập lệnh Python
- 16. Chia sẻ tập lệnh yêu cầu virtualenv được kích hoạt
- 17. Cách gọi các trình thu thập dữ liệu cụ thể từ một tập lệnh Python khác
- 18. cách thiết lập công việc cron từ tập lệnh php?
- 19. Làm cách nào để in ra stdout từ tập lệnh Python bằng phần mở rộng .pyw?
- 20. Gọi aspnet_regsql.exe từ tập lệnh SQL
- 21. Cách tải xuống tệp từ API Drive bằng cách sử dụng tập lệnh Python
- 22. Cách chạy tập lệnh python từ tập lệnh python khác và nhận mã trạng thái trả về?
- 23. Cách tải tệp lên Google Drive bằng tập lệnh Python?
- 24. Cách chạy ma thuật IPython từ tập lệnh (hoặc định thời gian tập lệnh Python)
- 25. Sự kiện kích hoạt trong tác vụ tập lệnh
- 26. Ubuntu Chrome: Cách đọc cookie từ tập lệnh python
- 27. Gọi tập lệnh Powershell từ Java
- 28. Chạy hai lệnh với crontab
- 29. Python - Cách gọi lệnh bash bằng đường ống?
- 30. Chạy tập lệnh php (từ xa) từ tập lệnh python (cục bộ)
Còn các đường dẫn đến thư viện easy_install thì sao? – Timmy
Nếu chúng được cài đặt trong môi trường ảo, hoặc thư mục gói trang web "toàn cầu", chúng sẽ được tìm thấy; nếu không, bạn sẽ phải đặt chúng trong '$ PYTHONPATH' của bạn, điều này hơi xấu xí hơn nhưng có thể được thực hiện bằng cách khởi chạy thùng Python bằng'/usr/bin/env' hoặc somesuch. – mipadi
khối mã cuối cùng có thể kết thúc bằng "/ home/bin/cronjob" –