geventpython安裝
❶ windows怎麼安裝pybluez
今天弄了一上午的python-ldap,發現要麼安裝vc,要麼用其他比較麻煩的方法,都比較麻煩。幸好找到這個地址:
http://www.lfd.uci.e/~gohlke/pythonlibs/
這上面有很多python第三方包的二進制安裝文件,包括32位和64位的。下載安裝就ok了!
包括了mysqldb,ldap等。
Index by date:
fiona
scikit-image
netcdf4
mercurial
scikits.audiolab
numba
llvmpy
python-igraph
rpy2
numpy
opencv
zope.interface
sfepy
quantlib
gdal
imread
django
psychopy
cx_freeze
msgpack
regex
cellcognition
vigra
scikit-learn
pytables
h5py
blender-mathutils
htseq
bioformats
simplejson
pyzmq
mako
simpleitk
qimage2ndarray
ujson
vlfd
libsvm
liblinear
cgkit
scipy
distribute
noise
theano
pyalembic
openimageio
pyaudio
pymca
pyamg
pgmagick
lxml
steps
sqlalchemy
cffi
biopython
python-ldap
pycurl
nipy
nibabel
pygments
mahotas
py-postgresql
pyamf
planar
holopy
pyvisa
jcc
polymode
polygon
cython
pyropes
llist
shapely
vtk
pymongo
libpython
meshpy
pandas
umysql
epydoc
coverage
cheetah
pyrxp
pybluez
pythonmagick
bsdiff4
pymssql
pymol
boost.python
orange
requests
pywcs
python-sundials
pymix
pyminuit
pylzma
pyicu
assimulo
basemap
pygraphviz
pyproj
mpi4py
spyder
pytz
pyfits
mysql-python
pygame
pycparser
twisted
pil
qutip
openexr
nipype
python-snappy
visvis
docutils
pyhdf
pyqwt
kivy
scikits.umfpack
psycopg
ets
guiqwt
veusz
pyqt
pyside
dpmix
py-fcm
scikits.hydroclimpy
smc.freeimage
scipy-stack
ipython
nose
mxbase
numexpr
pyyaml
ode
virtualenv
aspell_python
tornado
pywavelets
bottleneck
networkx
statsmodels
pylibdeconv
pyhook
lmfit
slycot
ndimage
scikits.scattpy
cvxopt
pymc
pysparse
scikits.odes
matplotlib
vpython
pycuda
pyopencl
pymvpa
pythonnet
cld
mod_wsgi
nltk
python-levenshtein
rtree
pywin32
scientificpython
sympy
thrift
pyopengl-accelerate
mdp
pyopengl
gmpy
reportlab
natgrid
scikits.vectorplot
pyreadline
milk
blosc
pycogent
pip
gevent
scons
carray
python-dateutil
jinja2
markupsafe
jsonlib
pysfml
fonttools
silvercity
console
python-cjson
pycluster
cdecimal
pytst
autopy
sendkeys
ceodbc
fipy
psutil
pyephem
pycifrw
blist
line_profiler
pydbg
bitarray
pyglet
python-lzo
faulthandler
delny
pyexiv2
ilastik
twainmole
scitools
pyspharm
casuarius
pyodbc
greenlet
nitime
pylibtiff
mmtk
pycairo
pysqlite
curses
videocapture
bazaar
nlopt
trfit
libsbml
oursql
sphinx
cellprofiler
py2exe
re2
liblas
cgal-python
pymedia
ffnet
pyfftw
libxml-python
pyfltk
pymex
pymatlab
zodb3
mmlib
pygtk
pyserial
babel
scikits.ann
scikits.delaunay
numeric
pulp
nmoldyn
pymutt
iocbio
jpype
wxpython
pybox2d
dipy
mmseg
pynifti
scikits.samplerate
scikits.timeseries
vitables
quickfix
numscons
visionegg
❷ windows下怎麼安裝Gevent
使用gevent,可以對並發多個http請求的爬蟲程序進行很好的優化, 缺點是,安裝相對麻煩,這個包依賴於libevent,在windows下面用easy_install直接安裝是不行的,必須用源代碼包
wget http://pypi.python.org/packages/source/g/gevent/gevent-0.13.8.tar.gz
tar zxvf gevent-0.13.8.tar.gz
cd gevent
裡面有個fetch_libevent.py 用來幫你下載libevent依賴
python fetch_libevent.py
python setup.py build
python setup.py install
這樣可以安裝成功,如果還不行,只能使用大殺器了windows下安裝python模塊的終極解決方案。
❸ gevent怎麼編譯
在gevent中主要使用Greenlet,給Python提供一個輕量級的協同程序,作為一個C的擴展模
塊.Greenlets主程序運行的所有系統進程是合理安排的.
這不同於任何multiprocessing或者multithreading提供的庫和POSIX線程,這是真正的並行多處理器或多線程庫提供真正的並
行結構
首先感謝https://maskv.com/technology/192.html作者給我的幫助我參考老方法編譯gevent1.0rc2成功但是無法運行Goagent最新版只能運行2.17原因就是缺少python2.7的支持現在博主給出啦方法搬過來方便大家
Tomato中python2.7+gevent1.0rc2環境的搭建
之前因為沒有搜索到在Tomato中編譯安裝gevent的教程,就自己琢磨出來Tomato中python2.6+gevent0.13.8環境的搭建方法(點擊這里查看),
文章發布之後收到了眾多的反饋。雖然Python官網當中的gevent最新版本為0.13.8,但Github上的gevent源碼已經更新到了
1.0rc2,最新版的Goagent本地客戶端也集成的是gevent1.0rc2,在整合了一些反饋之後,在自己的路由器上成功更新了python和
gevent。
首先卸載路由當中的python2.6及其相關組件,運行:
ipkg -force-removal-of-dependent-packages remove python26
rm -rf /opt/local/lib/python2.6 #若掛載路徑非/opt請自行修改
rm -rf /opt/lib/python2.6
之後更新、安裝所需要的依賴包:
ipkg update
ipkg upgrade
ipkg install busybox buildroot make grep openssl openssl-dev libuclibc++ wget-ssl python27 py27-setuptools
安裝完成之後,我們要修復幾個py27-setuptools當中的小錯誤。
首先easy_install的安裝路徑莫名其妙的指向了python2.5,不知是否只有我遇到了這個問題。修改 /opt/lib/python2.7/distutils/distutils.cfg 文件,將
1
site-dirs = /opt/local/lib/python2.5/site-packages
修改為
1
site-dirs = /opt/local/lib/python2.7/site-packages
其次easy_install的安裝臨時目錄指向了/tmp目錄,會造成安裝某些組件時tmp剩餘空間不足而導致的安裝失敗,我們要手動將其指定到掛載的U盤當中。
在/opt中創建tmp文件夾,修改 /opt/lib/python2.7/site-packages/setuptools/command/easy_install.py 文件,找到412行:
1
tmpdir = tempfile.mkdtemp(prefix="easy_install-")
將其修改為:
1
tmpdir = tempfile.mkdtemp(prefix="easy_install-",dir="/opt/tmp")
然後就可以使用easy_install安裝greenlet與cython了(此步驟花費時間奇長無比):
easy_install-2.7 greenlet
easy_install-2.7 cython
ln -s /opt/local/bin/cygdb /opt/bin/cygdb
ln -s /opt/local/bin/cython /opt/bin/cython
之後下載gevent:
cd /opt
/opt/bin/wget https://github.com/downloads/Sit ... event-1.0rc2.tar.gz --no-check-certificate
tar zxvf gevent-1.0rc2.tar.gz
cd gevent-1.0rc2
直接編譯會報錯,因為使用了mips2的sync指令,在Goagent的issues上找到了答案。心得編譯前記得開啟虛擬內存
修改 /libev/ev.c 文件,找到604行的:參考https://code.google.com/p/goagent/issues/detail?id=7823
1
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory")
修改為:
#define ECB_MEMORY_FENCE __asm__ __volatile__ (".set mips2; sync; .set mips0": : :"memory")
執行
python2.7 setup.py install
下載並安裝pyOpenSSL
cd /opt
wget http://pypi.python.org/packages/source/p/pyOpenSSL/pyOpenSSL-0.12.tar.gz
tar zxvf pyOpenSSL-0.12.tar.gz
cd pyOpenSSL-0.12
python2.7 setup.py install
安裝結束之後,運行Goagent可能會提示.python-eggs錯誤,我們可以手動指定緩存目錄。
修改Goagent的proxy.py文件,在:
1
import os
下一行添加:
1
os.environ['PYTHON_EGG_CACHE'] = '/opt/.python-eggs'
或者可以將 gevent-1.0rc2-py2.7-linux-mips.egg 解包:
cd /opt/local/lib/python2.7/site-packages
mv gevent-1.0rc2-py2.7-linux-mips.egg gevent-1.0rc2-py2.7-linux-mips.egg.zip
mkdir gevent-1.0rc2-py2.7-linux-mips.egg
cd gevent-1.0rc2-py2.7-linux-mips.egg
unzip /opt/local/lib/python2.7/site-packages/gevent-1.0rc2-py2.7-linux-mips.egg.zip
再次運行Goagent,應該不會再有錯誤提示了。
❹ Python requests+gevent+BeautifulSoup lxml 干點啥
最近工作中有個需求是抓一些數據 數據量上萬 講真 以前都是玩玩 沒實戰 所以來這個需求的時候 我內心其實有點激動
然後 我開始裝逼了 用request + BeautifulSoup(html) 用這兩貨實現
requests請求網路數據載入
BeautifulSoup(html) 自在解析器 解析網路獲取數據啪啦啪啦啪啦啪啦 沒幾下代碼擼完了 頓時感覺登上人生巔峰
開始運動 哦 不對 是運行 結果這貨第一頁(20個詳情)數據 用了快4分鍾
要不是中途有些log列印 我都以為他死了find實現
跟就結構 分析 大題思路
for tag in data.find_all("div", class_="article block untagged mb15"):
1處是一個列表 ---> find_all("div",class__="className")--List
然後對每個集合中取出 img 和 div[class="content"]的內容 代碼如下
name = tag.find("img").get('alt')
content = tag.find("div", class_="content").text.strip()select實現
這里要先記住一點 select 每次返回都是list 在你能控制的住的情況下取[0]
for tag in data.select('div[class="article block untagged mb15"]'):
同樣分析 你會發現其實差不多 只是寫法上有些不同 可以仔細看看兩者的寫法
name = tag.select('img')[0].attrs.get('alt')
content = tag.select('div[class="content"]')[0].get_text().strip()文檔很多 但是下面這個我覺得看著最舒服BeautifulSoup 相關文檔
下面圖片所示的好像是正規文檔
不知道為啥 也許是配色 看的我頭暈
裝逼模式已開啟
find分析結構圖
❺ Ubuntu安裝Odoo
說個坑,需要先進root賬戶。否則會有創建不了相關文檔及位置的提示報錯。
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
tar -zxf Python-3.9.0.tgz
cd Python-3.9.0
./configure --prefix=/usr/local/python3
./configure --enable-optimizations
Step 1 : Update Server
Step 2 : Create Odoo User in Ubuntu
Step 3 : Install PostgreSQL Server
Step 4 : Create Odoo user for postgreSQL
Step 5 : Install Python Dependencies
Step 6 : Install Python PIP Dependencies
Step 7 : Install other required packages
Step 8 : Install Wkhtmltopdf
Step 9 : Create Log directory
Step 10 :Install Odoo
Step 11 : Setting permissions on home folder
Step 12 : Create server config file
Step 13 : Install other Dependencies
Step 14 : 創建一個 Systemd Unit 文件
打開你的文本編輯器,並且在/etc/systemd/system/目錄下創建一個名為odoo.service的文件, 將下面的內容粘貼到文件中:
保存文件並且關閉編輯器。
設置該文件的許可權
通知 Systemd 有一個新的 unit 文件:
Step 15 : Now Start Odoo
通過執行下面命令啟用並且啟動 Odoo 服務:
或者直接執行以下命令
你可以通過下面的命令檢查服務狀態:
想要查看 Odoo 服務日誌,使用下面的命令:
打開你的瀏覽器,輸入:http://<your_domain_or_IP_address>:8069
假設所有安裝完成,你將會看到下面這樣的屏幕:
如果你無法訪問這個頁面,那很可能是你的防火牆阻止了埠8069。 請在寶塔面板(或通過防火牆命令)放行埠8069,雲伺服器上防火牆策略也應放行。
將 Nginx 配置成 SSL 代理伺服器
默認的 Odoo 網站伺服器通過 HTTP 服務。想要使 Odoo 部署更安全,我們將會配置 Nginx 作為 SSL 代理伺服器,使網站伺服器通過 HTTPS 進行服務。
SSL 代理伺服器是一個用來處理 SSL 加密解密的代理伺服器。這意味著,Nginx 將會處理並且解密進來的 TLS 連接(HTTPS),並且傳遞未被加密的請求到內部服務(Odoo)。在 Nginx 和 Odoo 之間的流量將不會被加密。
使用一個反向代理伺服器有很多好處,比如負載均衡,SSL,緩存,壓縮,靜態內容服務,等等。
確保你滿足下面的前提條件,再繼續下一步的安裝配置:
一個指向你的伺服器的公網 IP 的域名,我們使用example.com。
安裝 Nginx
域名的 SSL 證書。你可以安裝一個免費的 Encrypt SSL 證書。
打開你的文本編輯器,創建或者編輯域名伺服器配置塊:
下面的配置將會建立 SSL,HTTP 轉向 HTTPS,WWW 轉向 non-www,緩存靜態文件,並且開啟 GZip 壓縮。
不要忘記使用你自己的 Odoo 域名替換 example.com並且設置正確的 SSL 證書地址。
一旦你完成了,重啟 Nginx和Odoo服務:
此時,反向代理伺服器配置好了,你可以通過 https://example.com 來訪問 Odoo 了。
改變監聽埠
這一步是可選的,但是它是一個很好的實踐操作。
默認情況下,Odoo 服務監聽所有網路介面的8069埠。想要禁止對 Odoo 的直接訪問,你可以封鎖8069埠,並且強制 Odoo 只監聽本地監控。
我們將會配置 Odoo 僅僅監聽 127.0.0.1。打開配置文件,添加下面的內容到文件最後面: /etc/odoo13.conf
保存配置文件,並且重啟 Odoo 伺服器,使修改生效:
如果日誌出現以下錯誤
「connect() failed (111: Connection refused) while connecting to upstream, client: XX.XX.XX.XX, server: , request: "POST /longpolling/poll HTTP/1.1", upstream: " http://127.0.0.1:8072/longpolling/poll ", host: "XX.XX.XX.XX", referrer: " http://XX.XX.XX.XX/web "」
解決:
Let's just say you have a longpolling parameter in your odoo-server.conf
and set
after starting your odoo, just runs $ sudo netstat -tulpn to ensure that your longpolling is running, and you'll get this info :
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8072 0.0.0.0:* LISTEN 10121/python3
tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN 10119/python3
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1461/sshd
...
when you can't find your longpolling there (that's why Bad Gateway Occurs, nginx can not find the running longpolling port), maybe just need to install gevent first:
and restart your odoo.
check $ sudo netstat -tulpn again, and you'll see that your longpolling port already running..
啟用多進程
默認情況下,Odoo 工作在多線程模式。對於產品級別的部署,我們推薦修改成多進程伺服器,提升穩定性,並且充分利用系統資源。
想要啟用多進程,你需要編輯 Odoo 配置文件,並且設置一個非 0 的工作進程數字。工作進程數字,基於 系統中的 CPU 核心數字和可用的 RAM 內存來計算。
通過 Odoo 官方文檔計算工作進程的數量以及需要的 RAM 內存大小,你可以使用下面的公式:
工作進程數量計算:
工作進程最大數量理論值 = (system_cpus * 2) + 1
1 個工作進程可以服務 約等於 6 個並行客戶。
Cron 進程也需要 CPU
RAM 內存大小計算
我們考慮 20%的請求是重請求,並且 80%的請求是輕量級請求。重量級請求使用將近 1GB RAM,而輕量級請求使用將近 150MB RAM。
需要的 RAM = number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )
如果你不知道你的系統有多少 CPU,你可以使用下面的grep命令:
比方說,你有一個系統,擁有 4 核心 CPU,8GB RAM 內存,和 30 個並行 Odoo 用戶。
30 users / 6 = 5 (5 是所需要的理論工作進程數量)
(4 * 2) + 1 = 9 (9 是理論的最大工作進程數量)
基於上面的計算,你可以使用 5 個進程+1 個進程(Cron 進程)總共 6 個進程。
基於工作進程,計算 RAM 內存:
RAM = 6 * ((0.8 150) + (0.2 1024)) ~= 2 GB of RAM
計算結果顯示,Odoo 安裝將會需要大概 2GB 內存。
想要切換到多進程模式,打開配置文件,並且添加計算值: /etc/odoo-server.conf
重啟 Odoo 服務,使修改生效: