If you control the long-running task you call with an HTTP call, there are several ways to make this work, but whatever way, the celery worker is kind of irrelevant here; it would be the thing to wait until it gets the result to be able to store it under its job result.
back to the long-running task: ideally you make the call, and return immediately. It s not good practice to wait for the long-running task to return; it is better to return a partial result answer, then provide an API endpoint to check for status, and then periodically call for status until the long-running task has finished.
Better yet, you would want to use a 2-way type of connection, like a WebSocket, to establish communication, and request the long-running process to start (with any param/data) and then that long-running process can return the result through that return channel when it is done. Depending on how many connections you expect at any one time, it is more elegant than pinging back for status repeatedly.
No matter what, if the celery job is not the one processing the long-running task, it will just be sitting idle waiting for the results from the service, so is it even useful? You might as well implement the 1st solution in the client needing this result, as it will need to do the same thing asking the celery job if it is done.
Ideally, you move the long-running task into the celery worker itself, and implement client result lookup to celery the way described above.