First of all, thank you for this prototype! I was thinking about possible performance issues that could arise from the implementation and wanted to leave a few thoughts here:
I think that there needs to be some kind of locking mechanism to make sure that only one processing task is triggered per queue entry. Maybe there's also an intelligent way to let other clients know that they should try again later or something like that?
I think that there should be some kind of (configurable?) limit of parallel image processing tasks to protect the server from overload. I know that this is also the case today, but now we're talking about many more parallel requests that could take some time to finish.
For performance reasons, it could make sense to persist the queue in another location than the database, like redis or a dedicated queueing system. Maybe that's worth looking into.
First of all, thank you for this prototype! I was thinking about possible performance issues that could arise from the implementation and wanted to leave a few thoughts here:
Let me know if you need further input about this.