python系統服務
⑴ python怎麼操作windows服務
你可以使用pythoncom 庫,它包含ActivePython 或者可以安裝pywin32 (Python for Windows extensions).
下面是一個簡單操作服務的例子:
importpythoncom
importwin32serviceutil
importwin32service
importwin32event
importservicemanager
importsocketclassAppServerSvc(win32serviceutil.ServiceFramework):
_svc_name_="TestService"
_svc_display_name_="TestService"
def__init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop=win32event.CreateEvent(None,0,0,None)
socket.setdefaulttimeout(60)
defSvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
defSvcDoRun(self):
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_,''))
self.main()
defmain(self):
pass
if__name__=='__main__':
win32serviceutil.HandleCommandLine(AppServerSvc)
你的代碼需要放在mian()方法裡面,通常會有一些情況通過檢查你在 SvcStop 方法中設置的標志,然後中斷循環
⑵ windows下python怎麼搭建web伺服器
python創建一歷搜哪個最簡漏扒單httpwebserver伺服器肢碼的方法:stHandlerHandler==BaseHTTPServer.HTTPServerProtocol=HTTP/1.0ifsys.argv[1:]:port=int(sys.argv[1])else:port=8000server_address=(飗.0.0.1',port)Handler.protocol_version=Protocolhttpd=Server(server_address,Handler)print(ServingHTTP)httpd.serve_forever()
⑶ 怎麼把python部署到伺服器
使用pip或easy_install可以管理和安裝python的package包,實際上它們都是從pypi伺服器中搜索和下載package的。目前在pypi伺服器上,有超過三萬多個package,同時還允許我們將自己的代碼也上傳發布到伺服器上。這樣,世界上的所有人都能使用pip或easy_install來下載使用我們的代碼了。
具體步驟如下:
首先創建項目文件和setup文件。
目錄文件結構如下:
project/
simpletest/
__init__.py
test.py
setup.py
假設項目文件只有一個simpletest包,裡面有一個test.py文件。
創建的setup.py文件格式大致如下,其中,install_requires欄位可以列出依賴的包信息,用戶使用pip或easy_install安裝時會自動下載依賴的包。詳細的格式參考文檔。
from setuptools import setup, find_packages
setup(
name = 'simpletest',
version = '0.0.1',
keywords = ('simple', 'test'),
description = 'just a simple test',
license = 'MIT License',
install_requires = ['simplejson>=1.1'],
author = 'yjx',
author_email = '[email protected]',
packages = find_packages(),
platforms = 'any',
)
然後將代碼打包。
打包只需要執行python
setup.py xxx命令即可,其中xxx是打包格式的選項,如下:
# 以下所有生成文件將在當前路徑下 dist 目錄中
python setup.py bdist_egg # 生成easy_install支持的格式
python setup.py sdist # 生成pip支持的格式,下文以此為例
發布到pypi。
發布到pypi首先需要注冊一個賬號,然後進行如下兩步:
注冊package。輸入python setup.py register。
上傳文件。輸入python setup.py sdist upload。
安裝測試
上傳成功後,就可以使用pip來下載安裝了。
另外,pypi還有一個測試伺服器,可以在這個測試伺服器上做測試,測試的時候需要給命令指定額外的"-r"或"-i"選項,如python
setup.py register -r "",python
setup.py sdist upload -r "",pip
install -i "" simpletest。
發布到測試伺服器的時候,建議在linux或cygwin中發布,如果是在windows中,參考文檔,需要生成.pypirc文件
⑷ 如何用python自建kms伺服器
1.安裝依賴
yuminstallpython-argparse
2.下載代碼
gitclone
3.運行激活伺服器
cdpy-kms
pythonserver.py
這時候看到提示消息
TCPserverlisteningat0.0.0.0onport1688.
就是說KMS服務已經在1688埠上打開了,沒有錯誤。這就搭建完畢了。
4.長期運行配置
對於需要長期運行的KMS伺服器,可以使用supervisor管理py-kms服務(非必須步驟)
拷貝py-kms文件夾到/usr/local/目錄下
cp-rpy-kms/usr/local/
安裝supervisor
yuminstallpython-setuptools
easy_installsupervisor
生成默認配置文件(supervisord.conf)
echo_supervisord_conf>/etc/supervisord.conf
編寫supervisor腳本,加到/etc/supervisord.conf最後
[program:pykms]
command=python/usr/local/py-kms/server.py
autorestart=true
user=root
以daemon方式運行,執行
supervisord
5.客戶端測試
客戶端下載py-kms後,cd跳轉到該目錄,執行
pythonclient.py-vwwwb.vvvtimes.com
結果如下說明安裝成功
Connectingtoonport1688...
Connectionsuccessful!
SendingRPCbindrequest...
RPCbindacknowledged.
⑸ Python web伺服器怎麼處理請求
web伺服器處理連接請求的四種架構方式:
1、單線程web伺服器
此種架構方式中,web伺服器一次處理一個請求,結束後讀取並處理下一個請求。在某請求處理過程中,其它所有的請求將被忽略,因此,在並發請求較多的場景中將會出現嚴重的必能問題。
相關推薦:《Python教程》
2、多進程/多線程web伺服器
此種架構方式中,web伺服器生成多個進程或線程並行處理多個用戶請求,進程或線程可以按需或事先生成。有的web伺服器應用程序為每個用戶請求生成一個單獨的進程或線程來進行響應,不過,一旦並發請求數量達到成千上萬時,多個同時運行的進程或線程將會消耗大量的系統資源。
3、I/O多路復用web伺服器
為了能夠支持更多的並發用戶請求,越來越多的web伺服器正在採用多種復用的架構——同步監控所有的連接請求的活動狀態,當一個連接的狀態發生改變時(如數據准備完畢或發生某錯誤),將為其執行一系列特定操作;在操作完成後,此連接將重新變回暫時的穩定態並返回至打開的連接列表中,直到下一次的狀態改變。由於其多路復用的特性,進程或線程不會被空閑的連接所佔用,因而可以提供高效的工作模式。
4、多路復用多線程web伺服器
將多進程和多路復用的功能結合起來形成的web伺服器架構,其避免了讓一個進程服務於過多的用戶請求,並能充分利用多CPU主機所提供的計算能力。 web伺服器自身並不處理任何動態內容,它是如何響應客戶端的動態內容請求呢? 通過某種協議調用額外的其它進程來運行這個動態頁面,並將結果取回來以後返回給WEB伺服器,進而響應客戶端。