[Python] Một số tính năng của mod_python
mod_python là gì ?
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.





No trackbacks yet.