CherryPy по сравнению с [закрытым] Django

dlopen является способом пойти. Вот несколько примеров:

Загрузка плагина с dlopen:

#include 
...
int
main (const int argc, const char *argv[])
{

  char *plugin_name;
  char file_name[80];
  void *plugin;
  ...
  plugin = dlopen(file_name, RTLD_NOW);
  if (!plugin)
  {
     fatal("Cannot load %s: %s", plugin_name, dlerror ());
  }

вышеупомянутое Компиляции:

% cc  -ldl -o program program.o 

Затем принимая этот API для плагинов:

/* The functions we will find in the plugin */
typedef void (*init_f) ();
init_f init;
typedef int (*query_f) ();
query_f query;

Нахождение адреса init () в плагине:

init = dlsym(plugin, "init");
result = dlerror();
if (result)
{
   fatal("Cannot find init in %s: %s", plugin_name, result);
}
init();

С другой функцией, запрос (), который возвращает значение:

query = dlsym (plugin, "query");
result = dlerror();
if (result)
{
    fatal("Cannot find query in %s: %s", plugin_name, result);
}
printf("Result of plugin %s is %d\n", plugin_name, query ());

можно получить полный пример на строке .

32
задан 3 revs, 2 users 67% 2 May 2016 в 07:35
поделиться

5 ответов

Они не совсем сопоставимы. CherryPy обеспечивает маршрутизацию URL-адресов и абстракцию запроса / ответа, что очень упрощает создание прототипов (хотя я считаю vanilla mod_python столь же удобным). Django - это полный «стек» веб-приложений, включая систему шаблонов и объектно-реляционный преобразователь.

42
ответ дан 27 November 2019 в 20:12
поделиться

Хотя ee coli уже предоставил принятый ответ (и при этом хороший), одно я скажу в пользу CherryPy, так это то, что он также реализует WSGI из коробки. Это означает, что, в отличие от упомянутого подхода mod_python (который, я считаю, все еще является решением только для Apache) *, он обеспечивает абстракцию от вашего веб-сервера. Если вы все время пользуетесь Apache, это не такая уж большая победа, но если вы когда-нибудь думали, что можете попробовать альтернативные веб-серверы, такие как Lighttpd, то вы можете поменять местами свой веб-сервер без необходимости делать корректировки в вашем приложении Python. Лично для меня это была большая победа.

* Я не упоминаю здесь Django, потому что я не пользователь Django (я не

11
ответ дан 27 November 2019 в 20:12
поделиться

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

5
ответ дан 27 November 2019 в 20:12
поделиться

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

4
ответ дан 27 November 2019 в 20:12
поделиться

CherryPy - это веб-сервер "http framework", в то время как Django поддерживает интерфейс веб-приложений: он предоставляет объектно-реляционное отображение, шаблон, управление сеансами, автоматически генерирует схему БД и все экраны CRUD и многое другое.

4
ответ дан 27 November 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: