одновременное сохранение объектов в Django во время выполнения - PullRequest
0 голосов
/ 10 мая 2011

Как мне запустить бэкэнд в django, который сохраняет объекты в базе данных во время работы страницы?

Пример: скребок работает в спине бесконечно и обновляет модели статьями (название, сводка, url) На странице отображаются те, которые уже есть в базе данных, и, возможно, количество страниц, которые вы можете за это время удалить (например, в твиттере), которые вы можете загрузить.-mysql скрипт, который обновляет таблицу напрямую.Но есть ли способ получить доступ к интерфейсу django-models?Другими словами, как это делает Джанго?

Ответы [ 3 ]

1 голос
/ 10 мая 2011

вы можете написать пользовательскую команду управления docs и настроить задание cron для его выполнения с желаемым интервалом.

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

1 голос
/ 14 мая 2012

Кроме того, если вы хотите что-то немного более простое, чем Celery + Rabbit MQ, и не хотите слишком много копаться в cron, приложение django-extensions имеет довольно приятную функцию Jobs (http://packages.python.org/django-extensions/jobs_scheduling.html). Это работает только ежедневно / Почасовая / Еженедельная / Ежемесячная работа, но вам только когда-либо нужно редактировать ваш crontab один раз.

1 голос
/ 10 мая 2011

Простой ответ заключается в том, что вы не можете сделать это с помощью django как есть, из запроса http, потому что он не поддерживает фоновое выполнение и веб-сокеты из коробки.

На самом деле вы можете найти довольно много связанных ответов о stackoverflow, слишком много, чтобы упоминать их, но немногие действительно собрали ответ. В основном вы должны быть в состоянии достичь того, что вы хотите, используя:

  • сельдерей + кроликMQ например. http://webcookies.org/2009/09/10/rabbitmq-celery-and-django/ для асинхронного запуска задач в фоновом режиме
  • ajax на вашей веб-странице, чтобы постоянно обновлять страницу

более общий ответ, включающий несколько альтернатив, возможно, выходит за рамки SO, но если вы начинаете и у вас есть более точные вопросы, сообщите нам.

Редактировать: конечно, альтернативой полностью управляемой системе сельдерея является старый добрый cron (как вы предлагаете) + команда custom ./manage.py , которая позволяет вам использовать модели django, как предлагает @DTing !

...