Tôi đang phát triển một ứng dụng nối mạng trong Twisted, một phần trong đó bao gồm một giao diện web được viết bằng Django.Xoắn: Tạo một ThreadPool và sau đó daemonizing dẫn đến treo không rõ ràng
Tôi muốn sử dụng máy chủ WSGI của Twisted để lưu trữ giao diện web và tôi đã viết một plugin "nhấn" hoạt động để cho phép tôi sử dụng twistd
.
Khi chạy máy chủ với cờ -n
(không làm daemon) mọi thứ hoạt động tốt, nhưng khi cờ này bị xóa, máy chủ không phản hồi yêu cầu và không có thư nào được ghi (mặc dù máy chủ là vẫn chạy).
Có một số bug on Twisted's Trac dường như mô tả chính xác vấn đề và plugin của tôi xảy ra dựa trên code referenced in the ticket.
Thật không may, vấn đề chưa được khắc phục - và nó đã được nâng lên gần một năm trước.
Tôi đã cố gắng để tạo ra một lớp ThreadPoolService
, kéo dài Service
và bắt đầu một cho ThreadPool
khi startService
được gọi là:
class ThreadPoolService(service.Service):
def __init__(self, pool):
self.pool = pool
def startService(self):
super(ThreadPoolService, self).startService()
self.pool.start()
def stopService(self):
super(ThreadPoolService, self).stopService()
self.pool.stop()
Tuy nhiên, Twisted dường như không được gọi phương thức startService
ở tất cả. Tôi nghĩ vấn đề là với plugin "nhấn", ServiceMaker
chỉ có thể trả lại một dịch vụ để bắt đầu - và bất kỳ dịch vụ nào khác thuộc cùng một ứng dụng đều không được bắt đầu. Rõ ràng, tôi đang trả lại dịch vụ TCPServer
có chứa gốc WSGI.
Tại thời điểm này, tôi đã đánh một phần bức tường gạch. Có ai có bất kỳ ý tưởng như thế nào tôi có thể làm việc vòng vấn đề này?
Điều này thật hoàn hảo. Tôi không biết tại sao tôi không thấy điều đó trong tài liệu, nhưng nó hoạt động như một sự quyến rũ. Cảm ơn bạn! –