[Python] Một số tính năng của mod_python

mod_python là gì ?

Khi bắt đầu tìm hiểu về mod_python, tôi đã nghĩ rằng mod_python đóng vai trò là một handler độc lập để phục vụ một ứng dụng dựa trên Python thông qua Apache.Trên thực tế thì mod_python là một module mở rộng Apache tích hợp sẵn trình  thông dịch Python. Điều này có nghĩa là ngoài việc bạn có thể sử dụng mod_python để phục vụ các ứng dụng python chạy nhanh hơn so với sử dụng CGI truyền thống mà hơn nữa có thể tận dụng các Apache API để viết thêm các module Apache bằng ngôn ngữ python. mod_python cũng bao gồm một số công cụ hữu ích như quản lý Session, truy cập các APIs của Apache, PSP (python server page)  … Phiên bản hiện tại của mod_python là 3.3.1 và bạn có thể tải từ trang chủ của mod_python.

Một số tính năng của mod_python

Một số tính năng của mod_python, bao gồm:

  • mod_python handlers
  • Quản lý session
  • PSP (Python Server Page)
  • Authentication – đăng nhập

Trong phần này, tôi trình bày về mod_python handler và quản lý session. PSP và Authentication sẽ được trình bày ở loạt bài sau.

mod_python handlers

Bạn có thể chỉ định cho Apache xử lý các request bằng các module viết bằng python thông qua mod_python. Ví dụ, bạn cần tận dụng tính năng authentication có sẵn của Python để kiểm tra quá trình đăng nhập của User, bạn có thể sử dụng PythonAuthenHandler. Để báo cho Apache phần nào sẽ do mod_python xử lý, bạn cần khai báo các handler tương ứng trong tập tin httpd.conf . Xét một ví dụ sau trích từ file httpd.conf trên Apache 2.x

<Directory "/Users/lamdo/Documents/workspace/PythonWebApp/src">
    SetHandler mod_python
    PythonHandler base_http_handler
    PythonAuthenHandler base_authentication_handler
    PythonDebug on
    Order allow,deny
   Allow from all
</Directory>

Trong thiết trên, tất cả các request đến các script python trong /Users/lamdo/Documents/workspace/PythonWebApp/src đều được xử lý qua base_htpp_handler – vốn là 1 file python để nhận và xử lý các http_request. Bạn cũng thấy là tôi sử dụng PythonAuthenHandler và chuyển các request này cho 1 file python la base_authentication_handler.

Quản lý Session

Quản lý session là tính năng không thể thiếu của các web-server. Tất nhiên mod_python cũng phải có tính năng này. Không chỉ cung cấp các chức năng quản lý session có sẵn từ Apache mà còn cho phép bạn viết các API để tự quản lý session, tất nhiên là bằng ngôn ngữ python … Dưới đây là một ví dụ cụ thể về chức năng quản lý session của mod_python. Đoạn script này tôi trích từ file base_http_handler.py, file tôi dùng để quản lý các request.

from mod_python import apache, Session

def handler(request):
    session = Session.Session(request)
    if session.is_new():
       visit_token = 'application started'
    else:
       visit_token = 'application started already'
    session.save()
    echo(request, 'Token status %s' % visit_token, type='text/plain')
    return apache.OK

def echo(req, content, type='text/html'):
    req.content_type = '%s; charset=UTF8' % type
    req.write(content, 0)

Trong ví dụ trên, khi lần đầu bạn gửi request đến server, bạn sẽ thấy base_http_handler trả về application started, và nếu refresh lại sẽ thấy application_started_already.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s