Tôi đã được thông báo rằng không thể sử dụng ghi nhật ký trong Đa xử lý. Bạn phải làm điều khiển đồng thời trong trường hợp đa xử lý messes đăng nhập.Có hỗ trợ ghi nhật ký python không?
Nhưng tôi đã làm một số thử nghiệm, nó có vẻ như không có vấn đề sử dụng đăng nhập vào đa xử
import time
import logging
from multiprocessing import Process, current_process, pool
# setup log
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='/tmp/test.log',
filemode='w')
def func(the_time, logger):
proc = current_process()
while True:
if time.time() >= the_time:
logger.info('proc name %s id %s' % (proc.name, proc.pid))
return
if __name__ == '__main__':
the_time = time.time() + 5
for x in xrange(1, 10):
proc = Process(target=func, name=x, args=(the_time, logger))
proc.start()
Như bạn có thể nhìn thấy từ mã.
Tôi cố tình để nhật ký ghi xử lý con tại cùng một thời điểm (5s sau khi bắt đầu) để tăng cơ hội xung đột. Nhưng không có xung đột gì cả.
Vì vậy, câu hỏi của tôi là chúng ta có thể sử dụng đăng nhập đa xử lý? Tại sao có quá nhiều bài viết nói rằng chúng ta có thể không?
Một câu hỏi nữa. Các khuôn khổ web như bình sẽ được chạy trong nhiều công nhân nếu được lưu trữ bởi uwsgi hoặc nginx. Trong trường hợp đó, nhiều quy trình có thể ghi vào một tệp nhật ký. Nó sẽ có vấn đề? –
@KramerLi: Tôi đã trả lời câu hỏi của bạn trong phần mới trong câu trả lời của tôi – hansaplast