More than one playaction() in same BGE script
You can run actions simultaneously by setting them on different layers.

However, playing the same action will result in weird overlapping issues.  For example, when the loop starts at frame 30, it will inherit the positions etc set in the previous frames.  The first action will appear to do nothing.

You'll want to use separate actions and different layers.

obj.playAction('name_of_first_action', 0, 20, layer=0, play_mode=bge.logic.KX_ACTION_MODE_PLAY)
obj.playAction('name_of_other_action', 30, 42, layer=1, play_mode=bge.logic.KX_ACTION_MODE_LOOP)


And if you need to stop it later:

obj.stopAction(layer=1)