If your module can jump to the right address but you can't get a shell:

Are you running off the top of the stack?

Is your step size bigger than your nop sled?

Did you delete the handler part of the template?

If you can exploit netsec-playground and not netsec-projects:

The return address may be further up the stack on the latter which may affect how you design your payload.

Sometimes sock.get will affect the timing of your exploit. If you are ignoring all the output that is sent to you (i.e., never calling sock.get), consider adding this call anywhere you are waiting to here from the service.

It is possible that your shell is being closed before metasploit can recognize it. This varies by port number and by payload and is not intended. Try a few different payloads or submitting if you are convinced your code is correct. Another trick to verify an exploit is working: try using an exec payload with ls. If your exploit works you will see [*] Sending stage (38 bytes). If that is successful, try a different shell payload and one of them will work. Because of this, you may have to submit multiple times to get credit for your exploits.