I lack the knowledge to even know where to start researching this topic (such as keywords to use) so I'm hoping somebody can help point me in the right direction.
I have an .NET MVC application. In this application, the user uploads a zip file with a data layer and that data layer is used as input in a python script the application calls. Due to the nature of the database cursors (it's an ArcGIS Enterprise geodatabase if anyone is familiar) only one person can run the python script at a time as the cursors make exclusive locks on the database (there is no way around this). In the extremely rare chance that two people are trying to use this web application at the same time, I need to put the people in a queue so the python script completes for the first person and then starts on the next person's dataset. Where do I get started with this, or what words can you give me to start formulating some search queries on this topic?
Maybe there are more technology specific solutions will come, but from my first view, you can use priority queue style processing.
It can be as simple as creating a table and enqueue (insert) new requests over there and process as it comes (dequeue). Or, use higher level framework like RabbitMQ
So, every time when new zip file comes,
If second person uploads new file, you will check queue table, there will be flag last item is getting processed, then you can let client know, script is queued and will be processed.
Obviously it will be worth to generate unique id of client, then you will not mix priorities and scripts, if there are multiple uploads at the same time.