Очередь задач с кэшированными библиотеками в Django

Я создаю WEB-интерфейс для различных скриптов Python через Django.

Пример в файле calculation.py:

import datetime
def add_time(a, b):
    return = a + b + int(datetime.datetime.now())

Использование :

  • Пользователь может сказать: "Я хочу запустить add из calculation.py с аргументами [1, 3]", и это вернет ему результат, когда он будет готов.
  • Пользователь может сказать: "Я хочу, чтобы это запускало add из calculation.py с аргументами [1, 3] каждые 10 минут и проверяло, если результат больше X", и это сделает что-то, если это правда.

Большинство моих скриптовых функций работают быстро, но им приходится импортировать библиотеки, загрузка которых занимает много времени.

В настоящее время я делаю это непосредственно с помощью моего сервиса Django; это просто и загружает библиотеки один раз, что позволяет большинству последующих вызовов быть очень быстрыми, но иногда происходит тяжелый вызов, который замедляет все мое приложение Django, и я, кажется, ограничен, если я хочу иметь CRON-планирование для некоторых скриптов. Поэтому я ищу другое решение.

Я начал смотреть на :

  • Celery (но, похоже, больше не поддерживается под Windows)
  • Huey и Dramatiq
  • Django-Q2 (легко использовать с Django)

Насколько

я понимаю, ничто не будет кэшировать уже импортированные библиотеки. (Я не против "запуска массового импорта", если это необходимо). Может ли кто-нибудь подсказать, где мне следует искать или какое решение я могу подправить?

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

Представьте, что в вашем Django-приложении есть куча тяжелых задач, таких как сложные вычисления или обработка данных, которые замедляют работу веб-интерфейса. Вам нужен способ обрабатывать эти задачи отдельно, чтобы они не загромождали ваше приложение.

Вот более удобная для пользователя разбивка:

Celery: Это как работник-суперзвезда, который помогает выполнять задания, но он не очень хорошо играет с Windows, поэтому может не подойти здесь.

Huey и Dramatiq: Они похожи на надежных помощников, которые могут выполнять задачи отдельно от вашего приложения Django. Они хорошо работают с Windows и не вызывают проблем с совместимостью.

Django-Q2: Это как специализированный помощник, созданный специально для задач Django. Он прост в использовании и легко интегрируется с вашей установкой Django.

Теперь, когда дело доходит до работы с библиотеками:

Ни один из этих помощников не будет автоматически запоминать библиотеки, которые вы использовали ранее. Но вы можете сделать их умнее, указав им загружать необходимые библиотеки в начале каждой задачи. Таким образом, они не будут тратить время на повторную загрузку библиотек. Проще говоря, эти инструменты можно рассматривать как помощников, которые берут на себя тяжелые задачи вашего веб-приложения, обеспечивая его быстродействие и отзывчивость. А загружая библиотеки стратегически, вы можете сделать их еще более эффективными. В целом, я рекомендую попробовать Huey, Dramatiq или Django-Q2, чтобы понять, какой из них больше подходит для ваших нужд.

В итоге я использовал Django-q2 и использовал app init для загрузки библиотек для вызова qcluster

Вернуться на верх