Hey Simon -
Another approach recommended to me was to direct event data to a TCP socket which a Python script is monitoring. For example, if you had an out-of-the-box inbound connector polling a feature service for new features, the event data collected when new features were created could be sent to the Python script via an out-of-the-box TCP/Text outbound connector.
The python script monitoring the TCP socket has a toolbox opened and when event data is received on the socket the script executes a model in the toolbox providing the event data as input. Using this approach you wouldn't need to develop any custom GeoEvent Processor components; the Python script would asynchronously run its geoprocessing model not caring where the event data came from. The drawback, I suppose, is that you'd have no way of reporting or handling any errors since there is no way to have the Python process callback on GeoEvent Processor.
- RJ