2013-04-04 1 views
0

У меня есть веб-приложение, развернутое в Dotcloud, где данные на каждой странице могут быть довольно дорогими для вычисления (много секунд). Я хочу сделать начальные загрузки страниц максимально возможными, возвращая кешированную информацию, а затем ударяя по серверу с помощью множества запросов AJAX, которые приводят к полному вычислению. Но я не хочу, чтобы эти рекомендации AJAX забивали начальные загрузки страниц для других пользователей, поэтому я хочу, чтобы они выполняли очередность отдельно.Dotcloud - разделение первичных и вторичных веб-запросов

Я думаю, что одно и то же приложение Django должно использоваться для обоих серверов, особенно потому, что модель данных является общей. Таким образом, файл dotcloud.yml хотел вроде:

www: 
    type: python 
www-ajax: 
    type: python 
(...) 

Но как я могу направлять различные URL-адреса для каждого класса экземпляров? Кроме того, я читал о Гуникорн для длительных запросов. Эти запросы AJAX длинны, но они не зависят от внешних ресурсов, кроме БД. Это ситуация для Gunicorn, и если да, то есть ли простой способ интегрировать ее в конфигурацию?

ответ

1

Если вы настроили его так, как вы описываете в своем примере файл dotcloud.yml, у вас будет две разные службы с двумя разными URL-адресами. Поэтому, если вы хотите отправить материал в службу ajax, вы используете URL-адрес ajax, если вы хотите использовать обычный URL-адрес www.

Чтобы запустить gunicorn, вы можете использовать пользователя python-laber и выделить порт http для рабочего python, а затем иметь gunicorn, указанный на http-порту. Важно отметить, что у python-работника нет nginx перед ним, как у python-сервиса, поэтому для пушки должен быть тот, кто непосредственно прослушивает трафик.

Так что, чтобы сложить это, это будет выглядеть примерно так.

www: 
    type: python 
    approot: myapp 
www-ajax: 
    type: python-worker 
    approot: myapp 
    ports: 
    www: tcp 
    process: gunicorn -b 0.0.0.0:$PORT_WWW yourapp:app 

Ваша строка процесса, скорее всего, будет выглядеть иначе, но вы получите изображение.

Вам также не нужен соответствующий подход, просто поместите его в качестве примера.

+0

Удивительно, это выглядит очень полезно. Как я могу узнать, какой URL-адрес использовать для 'www-ajax'? – acjay

+0

Кажется, что это (http://docs.dotcloud.com/0.9/services/custom/#expose-additional-ports) немного объясняет. Так что мне нужно будет сделать настройку в моем приложении Django, так что в моем развертывании Dotcloud считывается переменная среды DOTCLOUD_SERVICE_HTTP_URL'. Собираясь попробовать это ... – acjay

+1

@ acjohnson55 вы можете назначить собственный домен для обоих. Www.myapp.com и ajax.myapp.com, а затем вы знаете, что они все время. –

 Смежные вопросы

  • Нет связанных вопросов^_^