Và nếu có, trong điều kiện nào? Hoặc, phrased luân phiên, nó là an toàn để chạy mã này bên trong xoắn:Có thể ghi vào ổ cắm UDP bao giờ không?
class StatsdClient(AbstractStatsdClient):
def __init__(self, host, port):
super(StatsdClient, self).__init__()
self.addr = (host, port)
self.server_hostname = socket.gethostname()
self.udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
def incr(self, stat, amount=1):
data = {"%s|c" % stat: amount}
self._send(data)
def _send(self, data):
for stat, value in data.iteritems():
self.udp_sock.sendto("servers.%s.%s:%s" % (self.server_hostname, stat, value), self.addr)
Tôi tin rằng nó đang chặn theo mặc định và bạn phải sử dụng 'self.udp_sock.setblocking (0)' để đặt nó thành không chặn, trong trường hợp này nó sẽ tăng ngoại lệ nếu nó không thể gửi dữ liệu ngay lập tức. – imreal