我試圖設置一個工作環境來運行後臺任務。我在兩個環境中運行相同的應用程序版本,一個是Web服務器,另一個是Worker。Elastic Beanstalk中的Django POST監聽器接收AWS Worker層請求
我需要根據到期日期定期刪除文件。我將一個視圖映射爲本地主機上的網址,其中郵件將作爲HTTP POST請求轉發。該任務正在安排中,似乎SQS正在運行,但消息全部位於WorkerDeadLetterQueue。
在我所取得的請求的日誌文件,但403錯誤:
在/ var /日誌/的httpd /訪問日誌:
"POST /networks_app/delete_expired_files HTTP/1.1" 403 2629 "-" "aws-sqsd/2.0"
,這在的/ var /日誌/ AWS-sqsd/default.log:
message: sent to %[ http://localhost:80/networks_app/delete_expired_files] 2016-01-23T14:58:05Z http-err: d5f645cf-ce15-40bc-8ee3-34acb79e797b (4) 403 - 0.007
這裏是我的views.py代碼:
def delete_expired_files(request):
if request.method == 'POST':
users = DemoUser.objects.all()
for user in users:
documents = Document.objects.filter(owner=user.id)
if documents:
for doc in documents:
now = timezone.now()
if now >= doc.date_published + timedelta(days = doc.owner.group.valid_time):
doc.delete()
的cron.yaml文件:
version: 1
cron:
- name: "delete_expired_files"
url: "/networks_app/delete_expired_files"
schedule: "* * * * *"
如果我通過瀏覽器,它的工作原理訪問URL,它顯示了一個在我的Web應用程序服務器的LOG_FILE GET請求 。
我該怎麼做才能讓工作環境執行任務?
爲什麼當工人試圖發送消息時,它會返回403錯誤?
它與角色權限有關嗎?
我應該在Django中編寫一個特定的監聽器嗎?
是用芹菜解決這個問題的最好方法嗎?