1.不需要性能,想脚本启动,加到shell:startup里就行了
Start.bat
python e:\flask\index.py
点击执行没问题,但不想要cmd这个黑窗口啊,百度了下windows的后台启动进程方法,加上了start/b ,然并卵。
2.然后想通过windows自家的IIS,据说是可以安装fastcgi部署flask,具体点击移步:http://luyaliang.blog.51cto.com/3448477/1949849
然而,我要告诉大家,这里IIS不是重点。因为部署访问会报错:
ifaces.load_from_powershell()
File"C:\Python34\lib\site-packages\scapy\arch\windows\__init__.py", line151, in load_from_powershell
for i in get_windows_if_list():
File"C:\Python34\lib\site-packages\scapy\arch\windows\__init__.py", line77, in get_windows_if_list
ps = sp.Popen(['powershell', '-NoProfile','Get-WMIObject -class Win32_NetworkAdapter', '|', 'select Name,@{Name="InterfaceIndex";Expression={$_.InterfaceIndex}},@{Name="InterfaceDescription";Expression={$_.Description}},@{Name="InterfaceGuid";Expression={$_.GUID}},@{Name="MacAddress";Expression={$_.MacAddress.Replace(":","-")}}| where InterfaceGuid -ne $null', '|', 'fl'], stdout = sp.PIPE, universal_newlines= True)
File"C:\Python34\lib\subprocess.py", line 813, in __init__
errread, errwrite) =self._get_handles(stdin, stdout, stderr)
File"C:\Python34\lib\subprocess.py", line 1033, in _get_handles
errwrite =_winapi.GetStdHandle(_winapi.STD_ERROR_HANDLE)
OSError: [WinError 6] 句柄无效。
Subprocess.py 和 scapy\arch\windows\__init__.py 都不是自己的py文件,试着修改了下__init__.py 的77 行,sp.Popen('…',stdin=sp.PIPE) ,然后就不报错了,页面也出来了。
但python scapy模块一直执行错误:OSError: [WinError 9] bad file 描述符。
估计还是和上面的报错有关系,拿不到subporcess.Popen的stdin。后来就没有然后了。。。
3.于是转移阵地,把目光又转回windows的脚本自启动了。
-
查了下还有种方式是写vb脚本来实现无窗口后台运行:
flask_start.vbs
set ws=WScript.CreateObject("WScript.Shell") ws.Run "e:\flask\startNaNd",0
直接点击运行也是没有问题的,80端口如约而启。
可重启之后,等半天都启不来,后来不用vbs脚本测试一下startNaNd报错- -!:
大概的意思是subprocess.Popen()执行powershell 的命令执行超时了,命令大概是获取ip地址和路由的网络相关的信息的,所以,想是不是网络那时没启来呢,网上搜了一下关于自启动在网络之后的问题没有搜到有价值的东西。
后来就直接vbs 脚本sleep了1分钟,然后在执行startNaNd. 这样是可以的。但一直不知道那个命令为什么会超时。难道是powershell这个网络相关的模块或服务没启来吗?windows叫人难以琢磨!
set ws=WScript.CreateObject("WScript.Shell") wscript.sleep 60000 ws.Run "e:\flask\startNaNd",0
转载于:https://blog.51cto.com/luyaliang/1949807