2012-01-09 31 views
5

tôi đang sử dụng crontab để khởi chạy tập lệnh python giả sử để khởi chạy một số procceses bằng chính nó bằng cách sử dụng subprocess.popen(). tôi sử dụng lệnh này để khởi chạy một thủ tục có thể mất 30 phút - vì vậy tôi không muốn chờ kết quả mà là tiếp tục với tập lệnh chạy crontab gốc của tôi. điều là crontab dường như xử lý subprocess.popen như subprocess.call!unix crontab không xử lý subprocess.popen của python cũng

tôi có thể thấy rõ trong các tập tin đăng nhập của tôi và process list rằng popen đầu tiên thành công nhưng nó không contiue ở chế độ nền - nó chờ đợi cho đến khi quá trình flirts popen kết thúc ...

này có thể là do tôi đang chuyển hướng stderr/steout vào một tập tin? tôi không thấy kết nối nhưng có lẽ ...

mã của tôi là như sau:

# inside process spawning loop 
# open and append process to list 
mainLogger.debug("about to launch process with popen") 
scoopPopenObj = subprocess.Popen(cmdArgsString, 
        shell=True,stdout=qScoopLogFile,stderr=qScoopLogFile) 
openScoops.append((fileName,time.time(),scoopPopenObj)) 
# rest of script, here is where i dont get until scoopPopenObj finishes.. 

bất kỳ ý tưởng?

Trả lời

1

Tôi không chắc rằng điều này có liên quan đến vấn đề này, nhưng khi chuyển hướng stderr vào ống giống như stdout bạn nên sử dụng stderr=subprocess.STDOUT như được giải thích trong documentation.

Các vấn đề liên quan