Сделать объект «почтовый ящик»; ради аргумента, скажем, это список. Это может быть словарь, или объект, или файл, или база данных; что вы хотите. Все, что подходит для вашего приложения.
Затем, когда вы создадите экземпляр ProcessProtocol
, передайте ссылку на почтовый ящик. Когда поступают соответствующие данные, self.mailbox.append(relevantData)
.
Кроме того, передайте ссылку на этот объект вашему HTTP-ресурсу, который отвечает на эти запросы. Затем в render_GET
, relevantData = self.mailbox.pop()
.
В Twisted нет волшебного способа сделать это. Все зависит от множества разных вещей в вашем приложении и от того, как вы хотите хранить эти данные и управлять ими, которые Twisted явно не несет.
Вопрос, который вы действительно задаете здесь, сводится к следующему: «У меня есть объект a
(ваш протокол процесса) и объект b
(ваш ресурс HTTP). Как мне получить a
вызывать метод в b
? Этот FAQ появляется в различных формах в сообществе Twisted, снова и снова, но очень сложно написать хороший ответ на него, который можно использовать повторно, потому что каждый думает, что они задают другой вопрос.
То, что делает Twisted - все Twisted когда-либо делает, действительно - отображает возникновение событий вне вашего процесса - данные, поступающие из подпроцессов, сеть - в вызовы методов в вашем процессе. То, как вы расположите объекты внутри, как вы храните ссылки между ними, и что вы делаете с данными, которые Twisted только что предоставил вам, - полностью зависит от вас . Именно благодаря этой архитектуре Twisted такой мощный. Когда вы научитесь извлекать код ошибки из обратного вызова, вам пора будет уйти:).