2016-08-25 34 views
1

我試圖讓一個on_insert事件掛鉤,從模式的一個文件,叫夏娃的patch_internal將文檔從模式B.Python的前夕patch_internal集ETAG

由於觸發事件掛鉤請求是針對一個POST ,在燒瓶請求中沒有If-Match頭部和必要的B etag

我試着在patch_internalflask.request.if_match之前設置燒瓶請求上的值,但似乎它是不可能的,因爲它是一個凍結集。

如何設置調用patch_internaletag

總之,文檔的創建使用不同的模式更新其他文檔。我可以這樣做嗎?

感謝。

回答

0

不能說這是最好的方法,但它的工作原理。

創建新的請求上下文以調用patch_internal,並在environ上設置etag用於創建它。下面的例子:

from flask import request, current_app 
from eve.methods.patch import patch_internal 

... 

new_environ = request.environ 
new_env['HTTP_IF_MATCH'] = patched_document['_etag'] 
    with current_app.request_context(new_env): 
     result = patch_internal('my_document_b', {'updated_key': value}, {'_id': my_document_b['_id']}) 
... 
2

您可以在您的通話concurrency_check=Falsepatch_internal

from eve.methods.patch import patch_internal 

with app.request_context(): 
    payload = {"value_key": "new value"} 
    lookup = {"_id": "12ababa12..."} 
    patch_internal("res_name", payload, **lookup, concurrency_check=False) 
+0

這是一個好主意!但爲了保證安全,我認爲保持併發控制是很有用的。 – gcw