no luck getting non-blocking subprocess pipes working, using subprocess.communicate() + JSON instead