我想要类似的东西BaseHTTPRequestHandler,只是我不希望它绑定到任何套接字;我想自己处理传入和传出的原始 HTTP 数据。有没有什么好的方法可以让我在 Python 中做到这一点?
为了澄清,我想要一个从Python(不是套接字)接收原始TCP数据的类,处理它并返回TCP数据作为响应(再次返回到python)。因此,此类将处理 TCP 握手,并且将具有覆盖我在 HTTP GET 和 POST 上发送的内容的方法,例如do_GET和do_POST。所以,我想要类似已经存在的服务器基础设施的东西,除了我想在 python 中传递所有原始 TCP 数据包而不是通过操作系统套接字。
我想创建 http 处理程序来处理一个会话:
func init(){
http.HandleFunc("/sess/215489598", func(w http.ResponseWriter, r *http.Request) {
//do something
})
}
Run Code Online (Sandbox Code Playgroud)
然后在会话结束(过期)时将其删除。
我怎样才能做到这一点 ?
我想问一个问题,但我会先展示我的文件
<html>
<body>
<a href="cloudje:firefox">Open firefox</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的 .desktop 文件:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/cloudjerun -c gedit
Name[en_US]=Gedit
Comment[en_US]=Small, easy-to-use program to access iTunesU media
Name=TunesViewer
Comment=Small, easy-to-use program to access iTunesU media
Icon=/usr/share/icons/hicolor/scalable/apps/tunesview.svg
Categories=Application;Network;
MimeType=x-scheme-handler/cloudje;
Comment[en_US.utf8]=Small, easy-to-use program to access iTunesU media
Run Code Online (Sandbox Code Playgroud)
教程:http : //jarrpa.net/2011/10/28/creating-custom-url-handlers-in-ubuntu-11-04-11-10-gnome-3-0/
好的,这很酷。.desktop 文件将放置在 /usr/share/applications 中。如果您执行命令“xdg-open cloudje:firefox”或类似“xdg-open cloudje:example”的命令,它将始终使用名为“cloudjerun”的 Python 脚本执行 gedit。如何使用命令“xdg-open cloudje:firefox”执行firefox?
我是否需要将 'Exec=/usr/bin/cloudjerun -c gedit' 替换为 'Exec=/usr/bin/cloudjerun -c %U' 或 'Exec=/usr/bin/cloudjerun -c %s' 或其他内容?
当我查找Handler.obtainMessage()的功能时,我读到它从全局消息池中检索消息,而不是创建消息的新实例。此全局消息池位于何处?
它是之前创建的所有消息对象的集合吗?
从记录器和处理程序设置日志记录级别有什么区别?
下面的代码:
myLogging = logging.getLogger('myOp')
myLogging.setLevel(10)
hdlr = logging.FileHandler(myLogFile)
myLogging.addHandler(hdlr)
myLogging.debug("Message here")
Run Code Online (Sandbox Code Playgroud)
将登录到myLogFile,但另一个不会:
myLogging = logging.getLogger('myOp')
hdlr = logging.FileHandler(myLogFile)
hdlr.setLevel(10)
myLogging.addHandler(hdlr)
myLogging.debug("Message here")
Run Code Online (Sandbox Code Playgroud)
为什么他们FileHandler.setLevel()不会写信给myLogFile?
我想每 15 秒获取一次位置,一切都很好,但在打瞌睡模式(深度睡眠)下,我的处理程序不起作用,是吗?AlarmManager 是个好方法,但时间限制为 1 分钟,在打瞌睡模式下不会重复。
@ReactMethod
public static void setAlarm()
{
int interval = 50; // delay in secs
AlarmManager am = (AlarmManager) reactContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(reactContext, AlarmManagerReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(reactContext, 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval*1000 , pi);
}
Run Code Online (Sandbox Code Playgroud)
接收者 :
public class AlarmManagerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
DoRoutine();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试调试“处理程序...在主处理程序列表和侦听处理程序列表中都找不到”问题。
有--list-host、--list-tags和--list-tags选项,但没有用于列出已注册处理程序的选项。我已经使用“调试”策略和 with 运行了 ansible-playbook -vvvv,但这些似乎都没有提供任何见解。我没有看到任何可能包含此信息的“神奇”变量。
有什么方法可以显示/转储这些处理程序和/或侦听器吗?
所以我问这个问题是因为在通过 Python 库、谷歌和 Stack Exchange 运行搜索时,我似乎找不到一个简单的措辞答案。
到目前为止我能找到的最好的是来自 wptserve:
“处理程序是具有通用签名的函数:
handler(request, response)
Run Code Online (Sandbox Code Playgroud)
预计处理程序将使用来自请求的信息(例如路径)来使用要发送的数据填充响应对象,或者通过与请求关联的 ResponseWriter 实例直接写入输出流。”
链接:https : //wptserve.readthedocs.io/en/latest/handlers.html
所以基本上,从我收集的信息来看,处理程序通过使用数据来响应用户请求,数据类型取决于请求的类型。
我相信它比那更复杂一点,但同样,真正需要的是一个非常简单的措辞,对处理程序是什么的概念性描述,没有花哨的术语。
我进行了以下修复,每次都无需确认即可在 Chrome 中打开所需的应用程序。它们运行良好,直到版本 84.0.4147.89 (Official Build) (64-bit) 的更新。
修复 1:
In C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Preferences
"protocol_handler":{"excluded_schemes":{"neededApp":false}}
Run Code Online (Sandbox Code Playgroud)
修复 2:
In Regedit: HKEY_CURRENT_USER\Software\Policies\Google\Chrome
Create DWORD ExternalProtocolDialogShowAlwaysOpenCheckbox =1
Run Code Online (Sandbox Code Playgroud)
知道新版本发生了什么变化或如何解决该问题吗?并非所有应用程序都会发生这种情况。
请参阅 Mozilla 文档中有关Proxy()的内容
一个简单的代理示例:
const handler = {
get: function(target, prop, receiver) {
return Reflect.get(target, prop, receiver);
},
set: function(target, prop, receiver) {
return Reflect.set(target, prop, receiver);
}
};
const proxy = new Proxy(target, handler);
Run Code Online (Sandbox Code Playgroud)
get我在and中有一些异步函数set,所以我想让get和setto 成为async函数。
我期望类似的东西:
const handler = {
get: async function(target, prop, receiver) {
await foo();
return Reflect.get(target, prop, receiver);
},
set: async function(target, prop, receiver) {
await bar();
return Reflect.set(target, prop, receiver);
}
};
const …Run Code Online (Sandbox Code Playgroud) handler ×10
python ×3
android ×2
http ×2
alarmmanager ×1
android-doze ×1
ansible ×1
async-await ×1
es6-proxy ×1
go ×1
javascript ×1
linux ×1
logging ×1
message ×1
protocols ×1
python-3.x ×1
request ×1
session ×1
ubuntu ×1
unsubscribe ×1
url ×1