The HWM condition is not hit in the example you gave. When you open a connection, a buffer is created even before the peer connection is established. HWM is only hit when this buffer is full. For example:
import zmq
zmq_context = zmq.Context()
print '> Creating a PUSH socket'
sender = zmq_context.socket(zmq.PUSH)
sender.hwm = 1
print '> Connecting'
sender.connect('tcp://localhost:%s' % 5555)
for i in range(3):
print '> Sending', i
sender.send('message %i' % i)
print '> Sent', i
Where HWM is set to 1. In this case, the first message will be buffered, and the second send will block until the first message is actually transmitted.