I have search it in official docs and source code but it doesn't make sense.
I also try to set it to value such as 10 or 1 but it still shows heartbeat=60 in web console of rabbitmq management.
From RabbitMQ documentation:
The heartbeat timeout value defines after what period of time the peer TCP connection should be considered unreachable (down) by RabbitMQ and client libraries. This value is negotiated between the client and RabbitMQ server at the time of connection. The client must be configured to request heartbeats. In RabbitMQ versions 3.0 and higher, the broker will attempt to negotiate heartbeats by default (although the client can still veto them). The timeout is in seconds, and default value is 60 (580 prior to release 3.5.5).
https://www.rabbitmq.com/heartbeats.html
Pika used to pick the minimum heartbeat value between server and client when negociating. This is no longer the case starting from 0.11. Pika picks the highest heartbeat value between client and server (and this is the norm in AMQP clients). This means that if you set a heartbeat value lower than 60 seconds, Pika will always pick RabbitMQ's value because it's higher. Try setting heartbeat to something higher than 60 seconds, and it should be visible in management console.
Though, if you really want to set the heartbeat value to something lower than 60 seconds (which is kind of counterproductive), you can still set the value in configuration.
Edit 2019-01-23: As of Pika 1.0, this behavior has changed again. Now, Pika picks the lowest heartbeat interval value between the client and the server if both the client and the server have specified a non-zero heartbeat interval value. If either the client or the server have not specified a heartbeat interval value or have specified zero, it takes the specified value if there is one, or zero otherwise (which means heartbeats are disabled). Still, it doesn't mean it's always a good idea to use low heartbeat intervals.