How can I produce a non-blocking process to modify newly created nodes of custom content type? I have a custom content type called a Scan where the only required field is ISBN. Nodes of this type are created when a user POSTs to my REST API endpoint with an ISBN number. That's all working fine, nice and quick (which it needs to be). 

Now I want some additional process that -- in it's own time without blocking the API request -- goes over these newly created scans, querying an API (Google Books/ISBNdb/OpenLibrary) to fill out the other fields. I can confidently write the plain PHP to do this but I'm trying to learn how I would do this in the Drupal spirit? 


I have learned custom modules so I've got an idea my code is going to sit in the controller (Yes?). 
I have looked at Rules &amp; Actions but these aren't working in Drupal 8 yet (Right?). 
Cron seems to only run every few hours which would be too slow as I want my code to run within minutes of node creation. 
I found hook_ENTITY_TYPE_create but not sure exactly how to create one? In my custom module? 


Please help :-) 

Disclaimer: I am new to Drupal and am self-teaching Drupal version 8. I am a senior PHP developer with a good understanding of good-old OO PHP but have just never done Drupal. Be gentle with me.
As an alternative to the cron job, this sounds like the queue system might be better.

The main difference is that in your hook_cron(), you have to execute queries to find data to process. With a queue, you listen to new entities being saved (hook_entity_insert()) and put them in your queue.

Then Drupal will manage the list of tasks (queue items) and will automatically invoke your callback for each of them. It will also handle time management and process the configured amount of queue items until the time you configure on your queue is up.

There are plenty of examples and blog posts to be found, this one seems pretty good: https://www.sitepoint.com/drupal-8-queue-api-powerful-manual-and-cron-queueing/. It seems to be very close to your use case, with a hook_entity_insert() than then does stuff with the new entities. It's pretty complete and does some more advanced things like a form where you can check the pending items and fire them off manually. You can of course skip that if you don't need it.