2011-09-08 38 views
7

Câu hỏi: Có một số loại thời gian ra ngoài hoặc gián đoạn đến hàm socket.accept() trong python không?đối tượng socket python chấp nhận thời gian ra


Thông tin:

tôi có một chương trình mà có một sợi con ràng buộc vào một cổng và không ngừng tiếp nhận và chăm sóc và chuyển chúng tới một hàng đợi cho các chủ đề chính. Ngay bây giờ tôi đang cố gắng để có được các chủ đề con để gián đoạn để nó có thể deconstruct một cách thích hợp. Tôi nghĩ rằng có thể cho tôi chỉ đơn giản là dừng các chủ đề con và có cha mẹ deconstruct đứa trẻ, nhưng có những lúc khác mà tôi muốn để có thể trở lại sớm chấp nhận hình thức vì vậy tôi chỉ quyết định đó sẽ là phương pháp hữu ích nhất.

Vì vậy, có cách nào mà tôi có thể có một thời gian ra hoặc hủy bỏ phương pháp chấp nhận để các chủ đề có thể trở lại w/o có cái gì đó kết nối với nó đầu tiên?

Trả lời

8

Bạn có thể thiết lập thời gian chờ mặc định với

import socket 
print socket.getdefaulttimeout() 
socket.setdefaulttimeout(60) 

AFAIK này sẽ ảnh hưởng tất cả hoạt động ổ cắm

+0

nó sẽ? được. khi tôi đọc tài liệu, nó làm cho nó nghe như vậy chỉ thực hiện gửi và recv. cảm ơn! – Narcolapser

6

Có thể settimeout() là những gì bạn đang tìm kiếm.

2

Bạn có thể sử dụng settimeout() như trong ví dụ này:

import socket 

tcpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
tcpServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
tcpServer.bind(('0.0.0.0', 10000)) # IP and PORT 

stopped = False 
while not stopped: 
    try: 
    tcpServer.settimeout(0.2) # timeout for listening 
    tcpServer.listen(1) 
    (conn, (ip, port)) = tcpServer.accept() 
    except socket.timeout: 
    pass 
    except: 
    raise 
    else: 
    # work with the connection, create a thread etc. 
    ... 

Vòng lặp sẽ chạy cho đến khi stopped được đặt thành true và sau đó thoát sau (tối đa) thời gian chờ bạn đã đặt. (Trong ứng dụng của tôi tôi vượt qua xử lý kết nối với một chuỗi mới được tạo ra và tiếp tục vòng lặp để có thể chấp nhận các kết nối đồng thời hơn nữa.)

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