我已经编写了一个基本的tcp服务器工厂,服务器客户端和使用twisted的服务.tcp服务器充当django服务器和另一个程序之间的中间件(让我们称之为客户端程序).
我想要实现的目标 -
1. 客户端请求中间件 tcp服务器;
2.it发送一个字符串作为请求体;
3. 中间件 tcp服务器反序列化请求中的信息.
4. 中间件将序列化信息进一步发送到django服务器.
5.然后,django服务器响应中间件服务器,该服务器在序列化响应后进一步响应客户端.
我能够到达第3步,但无法向django服务器发出任何http请求.
以下是我的middleware.py
from twisted.internet.protocol import ServerFactory
from twisted.internet.protocol import Protocol
from test_service import MyService
class TCPServerProtocol(Protocol):
data = ''
def connectionMade(self):
self.deferred = self.factory.service.deferred
self.deferred.addCallback(self.factory.service.s)
self.deferred.addCallback(self.transport.write)
self.deferred.addBoth(lambda r: self.transport.loseConnection)
def dataReceived(self, data):
self.data += data
def connectionLost(self, reason):
self.forward(self.data)
def forward(self, data):
if self.deferred is not None:
d, self.deferred = self.deferred, None
d.callback(data) …
Run Code Online (Sandbox Code Playgroud) 我是jQuery的新手,并试图修改现有的甘特图插件,以获得一个有几个月而不是几天的图表,但无济于事.有人可以帮我把三维日期数组转换成一个只包含月份和年份的二维数据(因为我猜这可能是解决这个问题的方法)?如果我对解决方案有误,请给我一个.先感谢您.
// Creates a 3 dimensional array [year][month][day] of every day
// between the given start and end dates
function getDates(start, end) {
var dates = [];
dates[start.getFullYear()] = [];
dates[start.getFullYear()][start.getMonth()] = [start]
var last = start;
while (last.compareTo(end) == -1) {
var next = last.clone().addDays(1);
if (!dates[next.getFullYear()]) { dates[next.getFullYear()] = []; }
if (!dates[next.getFullYear()][next.getMonth()]) {
dates[next.getFullYear()][next.getMonth()] = [];
}
dates[next.getFullYear()][next.getMonth()].push(next);
last = next;
}
return dates;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写D3构造的包装库,并为以下一个http://vallandingham.me/gates_bubbles/遇到了障碍.这是用咖啡脚本写的,我把它翻译成了javascript.这是代码:
(function () {
var $, DD3;
DD3 = window.DD3 = {};
$ = jQuery;
function AJAX(uri, cons) {
$.ajax({
url: uri,
type: 'GET',
dataType: 'json',
async: true,
error: function (jqXHR, textStatus, errorThrown) {
alert(uri);
}
}).done(function (data) {
cons.data = data;
cons.generate();
});
}
// Other constructs
DD3.Bubble_Force = (function(){
function Bubble_Force(options){
if (!(this instanceof DD3.Bubble_Force)) {
return new DD3.Bubble_Force(options);
}
if (typeof options.element === 'string') {
this.el = $(document.getElementById(options.element));
} else {
this.el = $(options.element);
} …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个扭曲的简单TCP服务器,该服务器必须按顺序执行以下操作:
KEEPALIVE
该连接的标志设置为1。以下是代码:
class MyFactory(ServerFactory):
protocol = MyProtocol
def __init__(self, service):
self.service = service
class MyProtocol(Protocol):
def connectionMade(self):
try:
self.transport.setTcpKeepAlive(1)
except AttributeError:
pass
self.deferred = Deferred()
self.deferred.addCallback(self.factory.service.compute_response)
self.deferred.addCallback(self.send_response)
def dataReceived(self, data):
self.fire(data)
def fire(self, data):
if self.deferred is not None:
d, self.deferred = self.deferred, None
d.callback(data)
def send_response(self, data):
for item in data:
d = Deferred()
d.addCallback(self.transport.write)
d.addCallback(self.wait_for_ack)
d.callback(item)
return
def wait_for_ack(self, dummy):
try:
self.transport.socket.recv(1024)
except socket.error as e:
print e
return
Run Code Online (Sandbox Code Playgroud)
在运行服务器和客户端时,出现以下异常:
Resource temporarily …
twisted ×2
d3.js ×1
gantt-chart ×1
javascript ×1
jquery ×1
python ×1
python-2.7 ×1
sockets ×1
tcp ×1
tcpserver ×1
twisted.web ×1