It would work I think, if it doesn't you can try to connect and disconnect everytime it collides to make the signal stop and resets.
You could also use apply_impulse.
void apply_impulse ( Vector2 offset, Vector2 impulse )
Applies a positioned impulse to the body (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied instantaneously. Both the impulse and the offset from the body origin are in global coordinates.
More details in the official docs: