Я пытаюсь проверить мои остальные API, но я обнаружил странное поведение, что если я создаю запрос get сразу после удаления, он вызовет 304 и вернет удаленный объект.Я не совсем уверен, почему это происходит.если я подожду секунду с get, он вернет 200 код, с которого был удален объект?
Log
2018-05-24 20:38:26,881 - tornado.access - INFO - 200 DELETE
/api/v1/destinations/5b0706984db64f0b3ad92e13 (127.0.0.1) 0.73ms
2018-05-24 20:38:26,929 - tornado.access - INFO - 304 GET
/api/v1/destinations (127.0.0.1) 39.74ms
rest api
import tornado.web
import tornado.gen
class Handler(base.BaseHandler):
def _get_destination(self, destination_id):
destination = self.datastore.get_destination(destination_id)
if not destination:
self.set_status(400)
return {'error': 'Destination not found: %s' % destination_id}
return destination
def _get_destinations(self):
destination = self.datastore.get_destinations()
return destination
@tornado.concurrent.run_on_executor
def get_destinations(self):
return self._get_destinations()
@tornado.gen.engine
def get_destinations_yield(self):
"""Wrapper for get_jobs in async mode."""
return_json = yield self.get_destinations()
self.finish(return_json)
@tornado.web.removeslash
@tornado.web.asynchronous
@tornado.gen.engine
def get(self):
self.get_destinations_yield()
def _delete_job(self, destination_id):
destination = self._get_destination(destination_id)
self.datastore.delete_destination(destination_id)
@tornado.concurrent.run_on_executor
def delete_job(self, destination_id):
self._delete_job(destination_id)
@tornado.gen.engine
def delete_job_yield(self, destination_id):
yield self.delete_job(destination_id)
@tornado.web.removeslash
@tornado.web.asynchronous
@tornado.gen.engine
def delete(self, destination_id):
self.delete_job_yield(destination_id)
response = {
'destination': destination_id}
self.set_status(200)
self.finish(response)
функции пимонго
def delete_destination(self, destination_id):
collection = self.get_collection(settings.DEST_COLLECTIONNAME)
collection.remove({"_id": ObjectId(destination_id)})
def get_destinations(self):
rows = self.get_collection(settings.DEST_COLLECTIONNAME).find({})
return_json = {
'destinations': [self._build_destination(row) for row in rows]}
return return_json