Làm thế nào để viết một tập lệnh bằng Python xuất ra nếu cần tây đang chạy trên máy (Ubuntu)?Cách kiểm tra xem Celery/Supervisor có đang chạy bằng Python
Trường hợp sử dụng của tôi. Tôi có một tập tin python đơn giản với một số nhiệm vụ. Tôi không sử dụng Django hay Flask. Tôi sử dụng người giám sát để chạy hàng đợi nhiệm vụ. Ví dụ,
tasks.py
from celery import Celery, task
app = Celery('tasks')
@app.task()
def add_together(a, b):
return a + b
Supervisor:
[program:celery_worker]
directory = /var/app/
command=celery -A tasks worker info
này tất cả các công trình, bây giờ tôi muốn có trang mà kiểm tra nếu quá trình cần tây/người giám sát đang chạy. tức là một cái gì đó như thế này có thể sử dụng Flask cho phép tôi lưu trữ trang cho một trạng thái 200 cho phép tôi tải cân bằng.
Ví dụ ...
check_status.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def status_check():
#check supervisor is running
if supervisor:
return render_template('up.html')
else:
return render_template('down.html')
if __name__ == '__main__':
app.run()
Tôi không có bất kỳ phiếu bầu nào còn lại cho ngày hôm nay, vì vậy tôi đang upvoting phương pháp này bằng nhận xét. – sobolevn
Tôi không nghĩ rằng 'app = celery.Celery ('nhiệm vụ', môi giới = 'redis: //')' dòng là cần thiết. Biến 'app' không được sử dụng ở bất kỳ nơi nào khác. – djromero
@ djromero nó được một lúc kể từ khi tôi kiểm tra như thế nào này làm việc, nhưng IIRC nó cần thiết để nhanh chóng ứng dụng singleton trong internals thư viện. Nó không nên cần thiết nếu bạn sử dụng cần tây ở một nơi khác và nó tạo ra thể hiện cần tây. – Rotten194