Nếu đây là câu hỏi ngu ngốc, tôi xin lỗi và sẽ giấu đầu mình trong xấu hổ, nhưng:Python/rq - theo dõi trạng thái của nhân viên
Tôi đang sử dụng lệnh này để xếp hàng công việc bằng Python. Tôi muốn nó hoạt động như sau:
- Công việc A bắt đầu. Job A lấy dữ liệu thông qua API web và lưu trữ nó.
- Công việc A chạy.
- Công việc A hoàn tất.
- Sau khi hoàn thành A, lệnh B bắt đầu. Công việc B kiểm tra từng bản ghi được lưu trữ bởi công việc A và thêm một số dữ liệu phản hồi bổ sung.
- Sau khi hoàn thành công việc B, người dùng nhận được một e-mail vui vẻ nói rằng báo cáo của họ đã sẵn sàng.
Mã của tôi cho đến nay:
redis_conn = Redis()
use_connection(redis_conn)
q = Queue('normal', connection=redis_conn) # this is terrible, I know - fixing later
w = Worker(q)
job = q.enqueue(getlinksmod.lsGet, theURL,total,domainid)
w.work()
tôi cho rằng giải pháp tốt nhất của tôi là phải có 2 công nhân, một cho công việc A và một cho B. Nhân viên công việc B có thể theo dõi công việc A và, khi công việc A đã được thực hiện, bắt đầu công việc B.
Những gì tôi không thể tìm ra để cứu mạng sống của mình là làm cách nào để một công nhân theo dõi tình trạng của người khác. Tôi có thể lấy ID công việc từ công việc A với job.id. Tôi có thể lấy tên công nhân với w.name. Nhưng không phải là người mù sương nhất về cách tôi chuyển bất kỳ thông tin nào cho người lao động khác.
Hoặc, có cách nào đơn giản hơn nhiều để làm điều này mà tôi hoàn toàn mất tích?
Nếu công việc B không thể chạy cho đến khi công việc A hoàn thành (ngụ ý họ không thể chạy song song), tại sao lại sử dụng rq? Chỉ cần thực hiện chúng tuần tự (trong một chủ đề hoặc quy trình riêng biệt nếu bạn không muốn chặn ứng dụng của mình) –
Các công việc cho A và B mất một thời gian rất dài và có thể xảy ra riêng biệt, vì vậy tôi muốn có thể tiếp tục chạy rất nhiều công việc của A độc lập của công việc B. Nếu nó quá khó khăn tôi có thể đầu hàng, mặc dù. – user1066609
Bạn có cặp A và B đi cùng nhau, hoặc bất kỳ B nào phụ thuộc vào bất kỳ A nào? Bởi vì trong trường hợp thứ hai, bạn đã có một địa ngục của một vấn đề syncronization. :-) –