2009-08-25 19 views
8

Tôi đang cố gắng để cấu hình mã python xoắn với Heapy. Ví dụ: (mã giả):Sử dụng trình duyệt hồ sơ bộ nhớ của Heapy với Twisted.web

from twisted.web import resource, server 
from twisted.internet import reactor 
from guppy import hpy 

class RootResource(resource.Resource): 
    render_GET(self, path, request): 
     return "Hello World" 

if __name__ == '__main__': 
    h = hpy() 
    port = 8080 
    site = server.Site(RootResource(mq)) 
    reactor.listenTCP(port, site) 
    reactor.run() 

Tôi cần làm gì để xem kết quả hồ sơ Heapy trong profile browser?

Trả lời

6

Sau khi xem qua trang web của guppy và không tìm thấy bất kỳ thông tin nào về cách khởi chạy trình duyệt hồ sơ ở đó, tôi bắt đầu tìm kiếm nguồn guppy và cuối cùng tìm thấy guppy/heapy/Prof.py. docstring chứa dòng này:

[0] heapy_Use.html#heapykinds.Use.pb 

Sau đó, nhớ rằng tôi đã nhìn thấy một số tài liệu cho các kiểu trả về của guppy.hpy như sử dụng, tôi đã kiểm tra để xem nếu guppy.hpy() pb() sẽ làm bất cứ điều gì.. Và, quả thật vậy. Vì vậy, đó dường như là cách trình duyệt hồ sơ được khởi chạy. Tôi không chắc đây có phải là điều bạn đang hỏi hay không, nhưng tôi cần phải tìm ra trước khi tôi có thể trả lời một phần khác của câu hỏi của bạn. :)

Dường như cách đơn giản nhất để làm cho thông tin này có sẵn là tạo một tài nguyên trong máy chủ web gọi Use.pb như là một phần của quá trình kết xuất của nó. Có những cách tiếp cận khác, chẳng hạn như nhúng một cửa cống trong ứng dụng của bạn hoặc sử dụng trình xử lý tín hiệu để kích hoạt nó, nhưng tôi thích ý tưởng tài nguyên. Vì vậy, ví dụ:

class ProfileBrowser(Resource): 
    def render_GET(self, request): 
     h.pb() 
     return "You saw it, right?" 

... 
root = RootResource(mq) 
root.putChild("profile-browser", ProfileBrowser()) 
... 

Sau đó, bạn có thể truy cập/trình duyệt hồ sơ bất cứ khi nào bạn muốn xem trình duyệt hồ sơ. Các cuộc gọi "pb" khối cho đến khi trình duyệt hồ sơ được thoát (lưu ý, chỉ cần đóng cửa sổ với nút hủy wm dường như không làm cho nó trở lại - chỉ có mục menu thoát có vẻ) để máy chủ của bạn bị treo cho đến khi bạn loại bỏ cửa sổ, nhưng cho mục đích gỡ lỗi có vẻ như nó có thể là tốt.

+0

bạn đã khởi tạo từ đâu? Hoặc cụ thể hơn, nơi tôi nhanh chóng h nếu tôi chạy nó bằng cách sử dụng twistd? –

+0

Tôi vừa tái sử dụng biến 'h' từ câu hỏi - trong đó tất cả các mã nằm trong cùng một mô-đun và' h' được khởi tạo toàn cục trước khi lò phản ứng được khởi động. Điều này chắc chắn không phải là thực hành lý tưởng cho mã thế giới thực. Bạn có thể muốn làm một cái gì đó như instantiating 'hpy' trong' __init__' của một trong các lớp quan trọng trong ứng dụng của bạn và lưu nó như là một thuộc tính. Một ý tưởng khác là khởi tạo nó trong một tệp tac và đính kèm nó vào đối tượng ứng dụng. –

Các vấn đề liên quan