以下是我想要在django視圖中執行的操作。django視圖中while循環替代time.sleep
import requests, time
def SOME_VIEW_FOR_AJAX(request):
if request.is_ajax():
response = requests.get('API_URL_START_TASK')
# response is like {'ready':false, 'status':'PENDING'}
while not response['ready']:
response = requests.get('API_URL_CHECK_TASK')
time.sleep(1)
result = response.get()
# SOME MORE WORKS ...
通過API
(芹菜是其他PC上),這種觀點發起芹菜任務,不斷檢查任務的狀態,並得到結果,如果任務完成。
這裏我關心time.sleep
的存在。 This SO POST表示使用time.sleep
不合適,因爲它包含當前線程。使用django視圖有可能替代time.sleep
嗎?還是允許使用time.sleep
這樣的用法?
我正在使用Django 1.8.6,Apache 2.4與mod_wsgi,Windows Server 2012 R2。提前致謝。
是的,我用ajax調用芹菜,這工作得很好。但是我擔心安全問題,因爲有人可以通過HTML/JS源代碼來訪問api url。這就是爲什麼我想出了這個服務器端檢查。當然,上面的視圖函數是針對ajax調用的。 – Leonard2
實際上並沒有看到您的代碼如何解決您可能遇到的任何安全問題。 ajax調用會通過url請求一個視圖,並且你可以在服務器端進行auth檢查(login_required,permission等)。您可以按Daniel的建議定期通過ajax進行檢查。 – keni
@keni感謝您的評論。我是關於這樣的事情的;帶有芹菜的機器必須允許CORS頭的所有域,因爲這臺機器應該爲客戶做出響應。所以我很擔心有人可能會因爲重複的Ajax請求而惡意負載機器。我會在服務器端檢查身份驗證! – Leonard2