我正在編寫一個在AWS上運行的web應用程序。我的應用程序要求用戶上傳他們的PDF文件。我將使用linux中的「convert」實用程序將它們轉換爲Images。 這是我在Ubuntu 12.04安裝:AWS芹菜和數據庫
- Django的
- 芹菜
- Django的芹菜
- 博託
我使用Apache作爲我的網絡服務器。
工作流程如下: 三個是三個異步任務,兩個隊列用於處理所有的處理,S3用於存儲輸入文件和輸出文件。 用戶上載的PDF,那麼:
accept_file_task被稱爲:此任務需要用戶上傳的PDF並將其存儲在我的S3存儲,然後插入一個消息到input_queue(SQS)
check_queue_and_launch_instance_task :一個定期任務,不斷監視input_queue中的消息數量,並在隊列中的消息多於Ec2實例的數量時啓動實例
實例具有一個True:循環的引導腳本。任何實例都可以從input_queue中選擇消息並執行Subprocess.Popen(「convert」+ input +輸出)並將處理後的消息寫入output_queue,並將生成的圖像上載到S3輸出存儲區並將其作爲下載鏈接
output_process_task:另一個不斷輪詢output_queue的週期性任務,只要有消息可用,它就會更新下面提到的表中的狀態。
我正在使用名爲Document的模型來存儲所有狀態信息。我也有用戶註冊,因此有一張表來存儲所有的用戶信息。另外Celery創建了很多表來存儲所有的任務信息。現在,我正在使用一個實例和該實例上的sqlite3數據庫(附帶python)。
我不確定下面的事情
如何擴大數據庫?我應該去RDS還是SimpleDB或AmazonDB。如果不是芹菜,我可以輕鬆使用simpleDB。我真的被困在這一個
如何擺脫兩個週期性任務check_queue_and_launch_instance_task和output_process_task。我的想法是必須以某種方式使用Autoscaling,以便在稍後階段需要時可以使用Elastic Load Balancer。
如果你們已經設計了類似的東西,請幫助我如何去了解它
感謝您的回覆。我的印象是異步任務需要芹菜。請你指點一下SQS + SNS + Cloudwatch可以代替芹菜的參考資料。我可以從字面上使用SimpleDb,因爲我的數據庫要求不是全部關係。它將我從所有的快照創建等中拯救出來,就像我可能需要做的RDS一樣。 – rajatk
您實際上可以使用[SQS上的芹菜](http://docs.celeryproject.org/en/latest/getting-started/brokers/sqs.html)。這對你有幫助嗎? – jamieb
那就是我已經在做的事情。但對於定期任務,我擔心自動縮放 – rajatk