当前位置: 首页 > news >正文

移动网站建设方案怎么制作一个网站首页

移动网站建设方案,怎么制作一个网站首页,wordpress 婚庆主题,合肥瑶海区python 限制同一时间只执行一个 作服務器端開發的同窗應該都對進程監控不會陌生,最近剛好要更換 uwsgi 爲 gunicorn,而gunicorn又剛好有這麼一章講進程監控,因此多研究了下。python 結合以前在騰訊工做的經驗,也會講講騰訊的服務…

python 限制同一时间只执行一个

作服務器端開發的同窗應該都對進程監控不會陌生,最近剛好要更換 uwsgi 爲 gunicorn,而gunicorn又剛好有這麼一章講進程監控,因此多研究了下。python

結合以前在騰訊工做的經驗,也會講講騰訊的服務器監控是怎麼作的。同時也會講下小團隊又該怎麼敏捷的解決。web

下面按照監控的方法依次介紹。shell

1、按照進程名監控服務器

在騰訊內部全部server都是要打包發佈的,而在打包過程當中是須要填寫要監控的進程名,而後在crontab中定時經過ps查詢進程是否存在。app

這種方法是比較簡單的方法,可是考慮到不少進程會在啓動以後更名,以及進程名存在各類特殊字符,多個進程同時存在的問題,實際操做起來並非很舒服。socket

舉個簡單的例子,gunicorn啓動以後的進程名相似這樣 master: [wsgi:app],其中的方括號在grep時要記得轉義,不然就會出問題。tcp

不過無論怎麼說,這種方法在不少其餘方式用不了的時候反而是最簡單的方法。this

下面是用python的實現:阿里雲

def monitor_process(key_word, cmd):p1 = subprocess.Popen(['ps', '-ef'], stdout=subprocess.PIPE)p2 = subprocess.Popen(['grep', key_word], stdin=p1.stdout, stdout=subprocess.PIPE)p3 = subprocess.Popen(['grep', '-v', 'grep'], stdin=p2.stdout, stdout=subprocess.PIPE)lines = p3.stdout.readlines()if len(lines) > 0:returnsys.stderr.write('process[%s] is lost, run [%s]\n' % (key_word, cmd))subprocess.call(cmd, shell=True)

2、按照端口監控url

這種方式以前在騰訊打包的時候也有用,可是多是進程名更直觀的緣由吧,貌似一直沒怎麼用起來。

不過如今本身在作包部署的時候,反而以爲端口監控是個最靠譜的事情了。這個也沒什麼好多說的,直接上剛寫完的python代碼:

def monitor_port(protocol, port, cmd):address = ('127.0.0.1', port)socket_type = socket.SOCK_STREAM if protocol == 'tcp' else socket.SOCK_DGRAMclient = socket.socket(socket.AF_INET, socket_type)try:client.bind(address)except Exception, e:passelse:sys.stderr.write('port[%s-%s] is lost, run [%s]\n' % (protocol, port, cmd))subprocess.call(cmd, shell=True)finally:client.close()

有的朋友可能說對於tcp端口檢查,其實以client的方式來connect()看是否成功會不會更好?其實我以爲這種方式也挺好的,而且對於不一樣的協議能夠再深刻處理一下,好比對http協議能夠用urllib2.urlopen確保返回正確的包纔算正常。不過若是這麼作的話,就有點偏黑盒監控 了,好比監控寶、阿里雲監控之類的服務了。

3、經過監控server啓動進程,並以監控子進程的方式監控

這個也是在gunicorn頁面上看到的,提及來gunicorn很不厚道的把gaffer放到第一個,讓我還覺得是個很成熟的產品,結果發現連啓動都是個問題。

相反排在後面的supervisor反而至關的好用,下面是截圖:



supervisor能夠很方便的管理進程,包括重啓,中止等等,並且提供了web界面和用戶驗證,能夠很方便的在線管理。

可是有好處就有壞處,用了supervisor以後,就不能本身隨便的去本身重啓服務了,不然會影響supervisor的監控,這對我這種喜歡本身執行 xx.sh restart 的人實在有點太痛苦了。固然,其實要是習慣了去supervisorctl 裏面start/stop/reload 以後也就還好了。

用supervisor配置gunicorn的配置項以下:

[program:yuanzhaopin]environment=PYTHON_EGG_CACHE=/tmp/.python-eggs/,PYTHONPATH=/data/release/yuanzhaopincommand=/usr/local/bin/gunicorn --debug --log-level debug --log-file /tmp/g.log wsgi:appuser=zny2008autorestart=trueredirect_stderr=true

ok,目前本身經常使用的就是這幾種模式了,你們若是有其餘選擇歡迎留言討論。

完整代碼以下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#*/1 * * * * python /xxx/monitor.py >> /xxx/logs/monitor.log 2>&1  &
import sys
import subprocess
import os.path as op
import socket
def this_abs_path(script_name):return op.abspath(op.join(op.dirname(__file__), script_name))def monitor_process(key_word, cmd):p1 = subprocess.Popen(['ps', '-ef'], stdout=subprocess.PIPE)p2 = subprocess.Popen(['grep', key_word], stdin=p1.stdout, stdout=subprocess.PIPE)p3 = subprocess.Popen(['grep', '-v', 'grep'], stdin=p2.stdout, stdout=subprocess.PIPE)lines = p3.stdout.readlines()if len(lines) > 0:returnsys.stderr.write('process[%s] is lost, run [%s]\n' % (key_word, cmd))subprocess.call(cmd, shell=True)def monitor_port(protocol, port, cmd):address = ('127.0.0.1', port)socket_type = socket.SOCK_STREAM if protocol == 'tcp' else socket.SOCK_DGRAMclient = socket.socket(socket.AF_INET, socket_type)try:client.bind(address)except Exception, e:passelse:sys.stderr.write('port[%s-%s] is lost, run [%s]\n' % (protocol, port, cmd))subprocess.call(cmd, shell=True)finally:client.close()#=============================================================================
def yuanzhaopin():cmd = '%s start' % this_abs_path('gun.sh')#monitor_process('\[yuanzhaopin\]', cmd)monitor_port('tcp', 8635, cmd)def main():yuanzhaopin()if __name__ == '__main__':main()

 

http://www.mnyf.cn/news/16634.html

相关文章:

  • 花桥网站制作谷歌seo招聘
  • phpcms 手机网站后台百度推广有效果吗?
  • 今日廊坊疫情最新消息小红书seo排名规则
  • 医院诊所网站源码重庆seo和网络推广
  • 响应式网站模板百度云最新新闻事件今天疫情
  • 医院网站建设解决方案网站建设与网页设计制作
  • 咨询公司需要什么专业保定seo排名优化
  • 磐石网站seo网站内容优化关键词布局
  • 英文网站翻译怎么做呢今天刚刚最新消息2023
  • 南昌做网站比较好的公司有哪些下载班级优化大师app
  • 逐鹿网站建设广州百度网站排名优化
  • 那里有专门做印刷品的网站北京百度关键词优化
  • 咸宁网站建设哪家专业seo搜索引擎优化培训班
  • 雄安网站建设机构整站排名优化品牌
  • wordpress英文企业网站模板江西百度推广公司
  • dede制作动态网站模板下载西安seo网站推广优化
  • 有什么好的网站推荐一下苏州百度推广排名优化
  • 个人在线网站推广手机怎么创建网站
  • 国外网站做盗版宁波seo外包服务平台
  • 表格网站源码优化网站价格
  • 长春网站排名厉害的seo顾问
  • 注册网站免费注册邮箱安卓优化大师老版本
  • 网站负责人核验照片百度seo搜搜
  • 北京做网站电话整站优化提升排名
  • 建设视频网站设计意义产品关键词
  • 秦皇岛制作网站济南seo整站优化招商电话
  • 在线资源搜索神器南京seo公司教程
  • 网上订酒店 网站开发关键词竞价广告
  • 运城做网站百度推广代理商利润
  • aspnet网站开发教程seo标题优化裤子关键词