nginx+gunicorn+django

Aug 08, 2016 am 09:30 AM
app django gunicorn nbsp

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">官方地址:http://gunicorn.org/</span>
Salin selepas log masuk
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">                  http://docs.gunicorn.org/en/19.2/</span>
Salin selepas log masuk

参考地址:http://www.cnblogs.com/ArtsCrafts/p/gunicorn.html

                  http://rfyiamcool.blog.51cto.com/1030776/1276364

一、前言介绍

    WSGI Server有哪些:
        比如Flask、webpy、Django、CherryPy 都自带WSGI Server 。当然性能都不好,自带的web server更多的是测试用途, 线上发布时,则使用高性能的 wsgi server或者是联合nginx做uwsgi 。

    

二、安装gunicorn

     ~$ sudo pip install gunicorn

     如果想让Gunicorn支持异步workers 的话需要安装一下三个python包          

     ~$ sudo pip install greenlet

     ~$ sudo pip install eventlet

     ~$ sudo pip install gevent

说明:如果安装greenlet失败的话,你需要安装 Python headers

    ~$ sudo apt-get install python-dev

我们可以查看一下gunicorn的版本

    ~$ gunicorn --version
          gunicorn (version 19.1.1)

二、gunicorn 命令 使用

    成功安装 gunicorn 之后有以下三个指令你可以直接使用,用来启动 gunicorn 运行 wsgi application或者 wsgi frameworks。

    1. gunicorn

        Gunicorn server最基本的命令,直接用来运行最基本的 wsgi application 。

        用法:gunicorn [OPTIONS] APP_MODULE

        OPTIONS 可选参数 运行gunicorn的配置选项,后面会讲到。

        APP_MODULE 指定 wsgi application文件,书写格式 $(MODULE_NAME):$(VARIABLE_NAME)。其中 module_name用来指定将要运行的 wsgi application文件,可是一个完整的点缀名。

        

比如当前目录myapp目录下有个python包gunicorn_app, gunicorn_app包下有一个wsgi application文件test.py。

        则module_name可以直接写成gunicorn_app.test。

        variable_name表示在module_name文件中要调用的对象(是一个WSGI callable,可以是一个函数)名。

        按照上面的例子,当前目录为/home/workspace/myapp,myapp中有一个包gunicorn_app,test.py代码如下:

def app(environ, start_response):
    """Simplest possible application object"""
    data = 'Hello, World!\n'
    status = '200 OK'
    response_headers = [
        ('Content-type','text/plain'),
        ('Content-Length', str(len(data)))
    ]
    start_response(status, response_headers)
    return iter([data])
Salin selepas log masuk

     我们将要运行test.py中的app

     gunicorn gunicorn_app.test:app

    2. gunicorn_django

        guniorn_django命令是用来将 Django app部署到 Gunicorn Server上的。

        其实也非常简单,原理和 gunicorn一样,只是gunicorn_django做了特殊处理,使得更加适合Django。

        基本用法:gunicorn_django [OPTIONS] [SETTINGS_PATH]

        OPTIONS 前面已经说过了。
        SETTINGS_PATH django app中 settings.py文件所在的目录,不写的话默认在当前目录下查找。

        不过这种用法适用于django1.4以前,对于Django1.4版本以后强烈推荐使用gunicorn命令。

        

    3. gunicorn_paster

        这个命令有兴趣可以到官方文档研究。

三、Gunicorn配置

     Gunicorn从三个不同的地方读取配置信息。

     第一个地方:从framework定义的配置信息中读取,目前只对Paster框架有效。

     第二个地方:在命令行中定义,命令行中定义的配置信息将会覆盖掉框架中定义的相同的参数名的值。

     第三个地方:创建一个配置文件,把配置信息写入文件(是一个python源文件,所以你就像在写python代码一样)中。

     通过 gunicorn -h 查看所有命令配置信息

     也可以通过官方文档查看更详细信息:http://docs.gunicorn.org/en/19.2/

     

     如在上面myapp例子的基础上

     gunicorn --workers=4 --bind=127.0.0.1:8000 myapp.gunicorn_app.test:app

     上面的命令启动4个workers,绑定到127.0.0.1:8000

     或者你使用配置文件,如下是一个config.py配置文件源码:

     

import multiprocessing

bind = "127.0.0.1:8001"
workers = multiprocessing.cpu_count() * 2 + 1
Salin selepas log masuk

     gunicorn --config=config.py myapp.gunicorn_app.test:app

四、gunicorn框架介绍

     Gunicorn是基于pre-fork模型的。也就意味着有一个中心管理进程(master process)用来管理worker进程集合。Master从不知道任何关于客户端的信息。所有请求

和响应处理都是由worker进程来处理的。

     Master(管理者)

     主程序是一个简单的循环,监听各种信号以及相应的响应进程。master管理着正在运行的worker集合。

     Worker类型

     1. Sync Workers

         最基本的也是默认的worker type。

         一个同步的worker class,同一时间只能控制一个request请求。

     2. Async Workers

        异步workers的使用是基于Greenlets(通过Eventlet和Gevent)。所以使用此worker type之前一定要安装好python对应的包。

        Greenlets是python多线程协作的一个实现。

     3. Tornado Workers  

         这是一个Tornado worker class。

     

五、Gunicorn部署

       使用Gunicorn必须基于一个代理服务器。

       1. Nginx Configuration

           虽然有很多HTTP代理可以使用,但是我们还是强烈推荐Nginx。如果你选择了其他代理服务器,你需要确认,当你使用默认的Gunicorn workers时,它能够buffers slow clients。没有buffering Gunicorn将很容易受 denial of service attacks的影响。也可使用 slowloris 去核实你的代理服务器是否工作良好。

         如下是一个nginx配置文件实例(假设127.0.0.1:8888端口已经被gunicorn绑定监听):

server {
        #listen   80; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6
        listen 80;
        client_max_body_size 4G;
        server_name www.android_stat.com

        keepalive_timeout 5;



        location / {
                try_files $uri @proxy_to_app;
        }

        location @proxy_to_app {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://127.0.0.1:8888;
        }
Salin selepas log masuk
六、监控Gunicorn

       注意:要监控Gunicorn的时候,Gunicorn不能启动daemon模式,如果使用daemon模式会fork出一个进程,这样监控工具就没法监控这个进程。

       我在这只介绍supervisor

      1. Supervisor

          Supervisor可以用来监控进程,下面是一个简单的supervisor的配置文件:

[program:gunicorn]
command=/path/to/gunicorn main:application -c /path/to/gunicorn.conf.py
directory=/path/to/project
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
Salin selepas log masuk

       

    

以上就介绍了nginx+gunicorn+django,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara melaksanakan pengesahan nama sebenar pada APP Jingdong Mall Cara melaksanakan pengesahan nama sebenar pada APP Jingdong Mall Mar 19, 2024 pm 02:31 PM

Bagaimana untuk mendapatkan pengesahan nama sebenar pada Jingdong Mall APP? Jingdong Mall ialah platform membeli-belah dalam talian yang sering digunakan oleh ramai rakan Sebelum membeli-belah, sebaiknya semua orang menjalankan pengesahan nama sebenar supaya mereka dapat menikmati perkhidmatan yang lengkap dan mendapat pengalaman membeli-belah yang lebih baik. Berikut adalah kaedah pengesahan nama sebenar untuk JD.com, saya harap ia dapat membantu netizen. 1. Pasang dan buka JD.com, dan kemudian log masuk ke akaun peribadi anda 2. Kemudian klik [Saya] di bahagian bawah halaman untuk memasuki halaman pusat peribadi 3. Kemudian klik ikon kecil [Settings]; sudut kanan atas untuk pergi ke antara muka fungsi tetapan 4. Pilih [Akaun dan Keselamatan] untuk pergi ke halaman tetapan akaun 5. Akhir sekali, klik pilihan [Pengesahan nama sebenar] untuk mengisi maklumat nama sebenar; . Sistem pemasangan memerlukan anda mengisi maklumat sebenar peribadi anda dan melengkapkan pengesahan nama sebenar

Django vs. Flask: Analisis perbandingan rangka kerja web Python Django vs. Flask: Analisis perbandingan rangka kerja web Python Jan 19, 2024 am 08:36 AM

Django dan Flask adalah kedua-duanya peneraju dalam rangka kerja Web Python, dan kedua-duanya mempunyai kelebihan dan senario yang boleh digunakan. Artikel ini akan menjalankan analisis perbandingan kedua-dua rangka kerja ini dan memberikan contoh kod khusus. Pengenalan Pembangunan Django ialah rangka kerja Web berciri penuh, tujuan utamanya adalah untuk membangunkan aplikasi Web yang kompleks dengan cepat. Django menyediakan banyak fungsi terbina dalam, seperti ORM (Pemetaan Hubungan Objek), borang, pengesahan, bahagian belakang pengurusan, dsb. Ciri-ciri ini membolehkan Django mengendalikan besar

Langkah dan langkah berjaga-jaga untuk mendaftarkan ID Apple Hong Kong (menikmati kelebihan unik Kedai Apple Hong Kong) Langkah dan langkah berjaga-jaga untuk mendaftarkan ID Apple Hong Kong (menikmati kelebihan unik Kedai Apple Hong Kong) Sep 02, 2024 pm 03:47 PM

Produk dan perkhidmatan Apple sentiasa digemari oleh pengguna di seluruh dunia. Mendaftarkan ID Apple Hong Kong akan membawa lebih banyak kemudahan dan keistimewaan kepada pengguna Mari kita lihat langkah-langkah untuk mendaftarkan ID Apple Hong Kong dan perkara yang perlu anda perhatikan. Cara mendaftar ID Apple Hong Kong Apabila menggunakan peranti Apple, banyak aplikasi dan fungsi memerlukan menggunakan ID Apple untuk log masuk. Jika anda ingin memuat turun aplikasi dari Hong Kong atau menikmati kandungan keutamaan Hong Kong AppStore, adalah sangat perlu untuk mendaftarkan ID Apple Hong Kong. Artikel ini akan memperincikan langkah tentang cara mendaftar ID Apple Hong Kong dan perkara yang perlu anda perhatikan. Langkah: Pilih bahasa dan wilayah: Cari pilihan "Tetapan" pada peranti Apple anda dan masukkan

Kebaikan dan Keburukan Rangka Kerja Django: Semua yang Anda Perlu Tahu Kebaikan dan Keburukan Rangka Kerja Django: Semua yang Anda Perlu Tahu Jan 19, 2024 am 09:09 AM

Django ialah rangka kerja pembangunan lengkap yang merangkumi semua aspek kitaran hayat pembangunan web. Pada masa ini, rangka kerja ini merupakan salah satu rangka kerja web yang paling popular di seluruh dunia. Jika anda bercadang untuk menggunakan Django untuk membina aplikasi web anda sendiri, maka anda perlu memahami kelebihan dan kekurangan rangka kerja Django. Berikut ialah semua yang anda perlu ketahui, termasuk contoh kod khusus. Kelebihan Django: 1. Pembangunan pesat-Djang boleh membangunkan aplikasi web dengan cepat. Ia menyediakan perpustakaan yang kaya dan dalaman

Bagaimana untuk membatalkan pakej data pada aplikasi China Unicom Bagaimana untuk membatalkan pakej data pada China Unicom Bagaimana untuk membatalkan pakej data pada aplikasi China Unicom Bagaimana untuk membatalkan pakej data pada China Unicom Mar 18, 2024 pm 10:10 PM

Aplikasi China Unicom dengan mudah boleh memenuhi keperluan semua orang Ia mempunyai pelbagai fungsi untuk menyelesaikan keperluan anda. Jika anda ingin mengendalikan pelbagai perkhidmatan, anda boleh melakukannya dengan mudah di sini adalah berkesan. Untuk mengelakkan kerugian seterusnya, ramai orang kadang-kadang merasakan bahawa data tidak mencukupi apabila menggunakan telefon bimbit, jadi mereka membeli pakej data tambahan, mereka tidak mahu bulan depan dan mahu berhenti melanggan segera menerangkan Kami menyediakan kaedah untuk berhenti melanggan, supaya rakan-rakan yang memerlukannya boleh datang dan menggunakannya! Dalam apl China Unicom, cari pilihan "Saya" di penjuru kanan sebelah bawah dan klik padanya. Dalam antara muka Saya, luncurkan lajur Perkhidmatan Saya dan klik pilihan "Saya telah memesan".

Cara menaik taraf versi Django: langkah dan pertimbangan Cara menaik taraf versi Django: langkah dan pertimbangan Jan 19, 2024 am 10:16 AM

Cara menaik taraf versi Django: langkah dan pertimbangan, contoh kod khusus diperlukan Pengenalan: Django ialah rangka kerja Web Python yang berkuasa yang sentiasa dikemas kini dan dinaik taraf untuk memberikan prestasi yang lebih baik dan lebih banyak ciri. Walau bagaimanapun, bagi pembangun yang menggunakan versi lama Django, menaik taraf Django mungkin menghadapi beberapa cabaran. Artikel ini akan memperkenalkan langkah dan langkah berjaga-jaga tentang cara untuk meningkatkan versi Django dan memberikan contoh kod khusus. 1. Sandarkan fail projek sebelum menaik taraf Djan

Cara mengeluarkan invois dengan apl berbilang titik Cara mengeluarkan invois dengan apl berbilang titik Mar 14, 2024 am 10:00 AM

Sebagai baucar beli-belah, invois adalah penting untuk kehidupan dan kerja harian kita. Jadi apabila kami biasanya menggunakan apl Duodian untuk membeli-belah, bagaimanakah kami boleh mengeluarkan invois dalam apl Duodian dengan mudah? Di bawah, editor tapak web ini akan membawakan anda panduan langkah demi langkah yang terperinci untuk membuka invois pada apl berbilang mata. Pengguna yang ingin mengetahui lebih lanjut tidak boleh ketinggalan. Dalam [Pusat Invois], klik [Pasar Raya Berbilang Titik/Beli-Belah Percuma], pilih pesanan yang perlu diinvois pada halaman pesanan yang lengkap, klik Seterusnya untuk mengisi [Maklumat Invois], [Maklumat Penerima], dan klik Serahkan selepas mengesahkan bahawa ia betul Selepas beberapa minit, masukkan peti mel penerima, buka e-mel, klik pada alamat muat turun invois elektronik, dan akhirnya muat turun dan cetak invois elektronik.

Apl video pro-level Blackmagic mendarat di Android, tetapi telefon anda mungkin tidak dapat menjalankannya Apl video pro-level Blackmagic mendarat di Android, tetapi telefon anda mungkin tidak dapat menjalankannya Jun 25, 2024 am 07:06 AM

Reka Bentuk Blackmagic akhirnya telah membawa apl Kamera Blackmagic yang dipuji ke Android. Apl kamera video profesional adalah percuma untuk dimuat turun, dan ia menawarkan kawalan manual yang lengkap. Kawalan ini bertujuan untuk memudahkan anda mengambil cin tahap pro

See all articles