Я пытаюсь понять веб-серверы на python.
У меня есть простой API:
from my_module import some_func
from aiohttp import web
from multiprocessing import Process, Queue
add_route = web.RouteTableDef()
queue = Queue()
all_tasks = []
@add_route.post('/add_task')
async def add_task(request):
task = Process(target=some_func, args=(request.json()))
all_tasks.append(task)
for task in all_tasks:
queue.put(task)
...
...
return web.json_response({'response': f'Task {task.id} was created'})
@add_route.get('/get_task')
async def task_status(request):
task_id = request.rel_url.query['task_id']
status = queue.get_task_status(task_id) # some magic nonexistent method
return web.json_response({task_id: status})
Но я не знаю, что делать. Все, что я хочу, это добавить задачу в очередь и сразу же получить ответ
{
"response": "Task '1123' was created"
}
и после получения статуса задачи с запросом на /get_task
:
{
"324": "In progress"
}