如何在supervisor-linux中为被监督的进程添加一个延迟
我添加了一个使用Python的Cassandra库的瓶服务器,但是它在此错误中退出: Bottle FATAL Exited too quickly (process log may have details) 日志显示了这一点: File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 1765, in _reconnect_internal raise NoHostAvailable("Unable to connect to any servers", errors) ,所以我尝试了使用suspisorctl启动瓶手动运行它,然后没有任何问题.结论=瓶装服务的开始太快(在需要的Cassandra监督服务之前):需要延迟! 解决方案 对sleep hack不太满意,我创建了一个启动脚本并从那里启动supervisorctl start processname. [prog
10 2024-04-03
编程技术问答社区
basicauth configprerender basicauth config
我正在运行一个 prerender server ,一切都很好,但是现在我想使用 basicauth . 在我的控制台中,我导出了用户名password export BASIC_AUTH_USERNAME=hugo export BASIC_AUTH_PASSWORD=boss 在我的server.js中,我添加了此行: server.use(prerender.basicAuth()); 但是问题现在是,我如何配置我的Express Server用正确的用户/通行证调用Prerender.我有这个: var prerender = require('prerender-node').set('prerenderServiceUrl', 'http://123.123.123.123:3000/'); prerender.set('protocol', 'https'); 我找不到任何文档,我期待着: prerender.set('user',
4 2024-03-29
编程技术问答社区
督促停止子进程
问题之一是,我面对主管的是,当我有一个命令又产生了另一个过程时,主管无法杀死它. 例如,我有一个Java过程,当正常运行时,它就像 $ zkServer.sh start-foreground $ ps -eaf | grep zk user 30404 28280 0 09:21 pts/2 00:00:00 bash zkServer.sh start-foreground user 30413 30404 76 09:21 pts/2 00:00:10 java -Dzookeeper.something..something Substisord配置文件看起来像: [program:zookeeper] command=zkServer.sh start-foreground autorestart=true stopsignal=KILL 当主管从supervisorctl中阻止他们时,有多个孩子的这些过程无法很好地处理.因此,当
6 2024-03-28
编程技术问答社区
用supervisord启动Celery。AttributeError: 'module' object has no attribute 'celery'
我曾经在一个文件中将所有烧瓶应用程序代码和芹菜代码都放在一个文件中,并且可以与主管使用.但是,这是非常的头发 在我的项目目录中,我可以用以下命令手动启动芹菜 celery -A celery_tasks worker --loglevel=INFO 但是,由于这是一台服务器,所以我需要芹菜在背景中作为守护程序运行. 但是,当我打电话sudo supervisorctl restart celeryd 时,它显示了以下错误 celeryd: ERROR (abnormal termination) 和日志说: Traceback (most recent call last): File "/srv/www/learningapi.stanford.edu/peerAPI/peerAPIenv/bin/celery", line 9, in load_entry_point('celery==3.0.19', 'console_scr
20 2024-03-18
编程技术问答社区
监督者模式下的Kafka
我正在尝试在监督模式下运行kafka,以便在关闭时可以自动启动.但是,所有运行kafka的示例都使用shell脚本,而supervisord均无法注意要监视哪个PID.谁能建议完成卡夫卡的自动重新启动? 解决方案 如果您在Unix或Linux机器上,那么这是/etc/inittab 时用方便的.或者,您可能想使用 daemontools .我不知道Windows. 其他解决方案 我们正在监管下运行kafka( http://supervisord.org/)魅力.运行命令看起来像这样(如supervisord.conf文件中指定: command=/usr/local/bin/pidproxy /var/run/kafka.pid /usr/lib/kafka/bin/kafka-server.sh -f -p /var/run/kafka.pid flag -f告诉卡夫卡从前景开始.如果设置了标志-p,则将KAFKA Process PID写入指定的文件中.
6 2024-03-01
编程技术问答社区
如何才能让Amazon SQS的PHP接收脚本永远运行下去?
我以前已经使用Gearman和主管来管理工作. 在这种情况下,我们正在使用Amazon SQS,我花了一些时间试图抬头. 我已经从我们的主要网络服务器中设置了一个单独的微实例,以用作图像处理服务器(纯粹用于测试,它将被升级并在此实现之前成为集群的一部分) ) 在此微观实例上,我已经安装了PHP和ImageMagick,以执行图像处理. 我还编写了一个工作脚本,该脚本接收了来自Amazon SQS的消息. 所有这些都可以很好地工作,但是我需要这个脚本一遍又一遍地运行才能不断检查消息. 我不喜欢运行连续循环的想法,所以已经开始看其他方法很少. 所以我的问题是通常认为是这样做的最佳实践方法? 我担心记忆,因为PHP并不是真正为此设计的,因此感觉就像运行脚本一段时间,然后停止并重新启动它可能是我最好的选择. 我有使用主管的经验(以确保Gearman工人不断运行),并且想知道我是否可以简单地使用它来一遍又一遍地连续执行简单的PHP脚本?
8 2024-01-26
编程技术问答社区
由于'INFO spawnerr: unknown error making dispatchers for 'app_name',无法用nohup启动服务。EACCES'。
我正在尝试与主管启动服务,但我会遇到一个错误的说法 信息spawnerr:未知错误造成'app_name'的调度员:eacces 这是我的Substisord.conf文件: [supervisord] logfile=/tmp/supervisord.log logfile_maxbytes=50MB ; change these depending on how many logs logfile_backups=10 ; you want to keep loglevel=info pidfile=/tmp/supervisord.pid nodaemon=true minfds=1024 minprocs=200 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [superviso
10 2024-01-25
编程技术问答社区
在AWS AMI Linux服务器上设置Supervisord
我试图让主管工作以确保我的队列系统始终运行. 这是我采取的步骤,我从各种来源拼凑在一起: (作为根或超级用户运行) 1) $ easy_install主管 2) $ echo_supervisord_conf>/etc/supervisord.conf 3) $ sudo vi sustersord.conf 4) 将以下内容粘贴到文件的结尾: 命令=/usr/bin/php/path/to/appname/artisan -env = production -poducation -peripOut = 240 queue:listic 5) $ SUBSSISORD -C/etc/supervisord.conf 6) $ sustapisorctl 7)主管>状态 主管> 它不显示任何内容. 解决方案 这是我使用的解决方案. AWS AMI包括用于安装Python应用程序的PIP.这是设置命令: $ s
14 2024-01-25
编程技术问答社区
PHP中的消息队列和工作者系统的有效架构?
我正在尝试将我想在PHP应用中实现的消息队列模型和作业缠住. 我的目标是卸载需要发送到多个第三方API的消息/数据,因此访问它们不会减慢客户端.因此,将数据发送到消息队列是理想的. 我考虑使用Just Gearman持有MQ/Jobs,但我想使用诸如SQS或Rackspace Cloud cloud queues之类的云队列服务,因此我不必管理消息. 这是我认为我应该做的事情的图: 问题: 我的工人,他们都必须用PHP写下,他们都必须轮询云队列服务吗?这可能会变得昂贵,尤其是当您有很多工人时. 我在想可能有1名仅用于轮询队列的工人,如果有消息,请通知其他工人他们有工作,我只需要使用supervisord在线上保持这1名工人?这种投票方法比使用能够通知的MQ更好吗?我应该如何对MQ进行一次调查,或者每秒或尽可能快地进行调查?如果我看到投票人员放慢脚步,请增加投票人员? 我还在考虑为所有消息有一个队列,然后根据需要处理的位置将消息分配给其他云MQ的工
14 2024-01-25
编程技术问答社区
Laravel-工作在一个服务器上派发,在另一个服务器上处理
我正在研究Laravel应用程序的日志记录方面,AMD计划在以后将数据发送到SQS进行检索.但是,我想将作业从我的生产服务器派遣到AWS队列,但是在单独的登录服务器上有一个队列,该服务器会倾听队列. . 我了解如何设置队列工人来聆听队列,但是,Laravel的工作是自我处理的.因此,当记录服务器上的工作人员从SQS检索消息时,它将在同一名称空间(带有同一类名称)上寻找作业来处理它.有什么方法可以以不同的方式处理此操作,或者我只需要在记录服务器上命名作业处理程序,与生产服务器上的Job Dispatcher相同. 解决方案 您可以为每个特定服务器创建不同的队列,并根据必须执行的位置发送每个作业. 基本上,这是在特定队列上推动工作的方法: $job = (new SendReminderEmail($user))->onQueue('emails'); 这是从特定队列处理作业的命令: php artisan queue:listen --queue=em
14 2024-01-25
编程技术问答社区
在Elastic Beanstalk上将Celery作为Demon与Supervisor和Django一起运行
我试图让芹菜与Django一起在EB环境上奔跑,并且我已经非常接近使一切运行.我有这个processor的配置文件 #!/usr/bin/env bash # Get django environment variables celeryenv=`cat /opt/python/current/env | tr '\n' ',' | sed 's/export //g' | sed 's/$PATH/%(ENV_PATH)s/g' | sed 's/$PYTHONPATH//g' | sed 's/$LD_LIBRARY_PATH//g'` celeryenv=${celeryenv%?} # Create celery configuraiton script celeryconf="[program:celeryd-worker] ; Set full path to celery program if using virtualenv command=/opt/pytho
8 2024-01-24
编程技术问答社区
在AWS Elastic Beanstalk上的Celery配置问题--"没有配置更新的进程"
我已经在AWS Elastic Beanstalk上部署了一个Django 2应用程序,我正在尝试配置芹菜以在同一台计算机上执行异步任务. 我的文件: 02_packages.config files: "/usr/local/share/pycurl-7.43.0.tar.gz" : mode: "000644" owner: root group: root source: https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz packages: yum: python34-devel: [] libcurl-devel: [] commands: 01_download_pip3: # run this before PIP installs requirements as it needs to be co
18 2024-01-24
编程技术问答社区
芹菜。WorkerLostError。工作者过早退出:信号9(SIGKILL)。
我在我的Django应用程序(在Elastic Beanstalk上)中使用芹菜与RabbitMQ来管理背景任务,并使用主管对其进行了a魔. 现在的问题是,我定义的时期任务之一是失败(在工作正常的一周之后),我遇到的错误是: [01/Apr/2014 23:04:03] [ERROR] [celery.worker.job:272] Task clean-dead-sessions[1bfb5a0a-7914-4623-8b5b-35fc68443d2e] raised unexpected: WorkerLostError('Worker exited prematurely: signal 9 (SIGKILL).',) Traceback (most recent call last): File "/opt/python/run/venv/lib/python2.7/site-packages/billiard/pool.py", line 1168, in mark_
48 2024-01-24
编程技术问答社区
你的服务器套接字监听积压被限制在100个连接以内
我在UWSGI上运行烧瓶应用程序.我使用主管来管理UWSGI流程.我发现日志说 您的服务器套接字收听积压限制为100个连接. 如何克服100个连接限制? 我的运行脚本如下: [program:myapp] command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads 解决方案 请注意,100个连接的"收听积压"并不意味着您的服务器只能处理100个同时(或总)连接 - 而是取决于已配置的进程或线程的数量.收听积压是一个套接字设置,告诉内核如何限制听力插座的侦听队列中未偿还的(尚未被限制)连接的数量.如果待处理连接的数量超过了指定的大小,则将自动拒绝新的大小.运行的服务器定期为其连接服务不需要大的积压大小. 根据手册,您可以使用-l选项更改收听积压: -l|--li
42 2023-12-15
编程技术问答社区
有类似于Windows的supervisord吗?
我需要运行Python脚本,并确保它在终止后会重新启动.我知道有UNIX解决方案称为Substisord.但是不幸的是,必须在Windows上运行我的脚本的服务器.您知道哪种工具有用吗? 谢谢 解决方案 尽管有大脂肪免责声明在这里,您可以使用 cygwin 在Windows中;事实证明,Cygwin在模拟POSIX环境方面走了很长一段路,以至于实际上主管没有变化.无需学习新工具,如果您需要在多个平台上部署复杂的项目,甚至可以节省很多工作. 这是我的食谱: 如果您尚未完成,请安装Cygwin.在安装过程中,选择Python. 从cygwin终端中,安装 virtualenv 照常. 为Substisord创建Virtualenv,然后照常安装: pip install supervisord 以通常的方式配置主管.请记住,主管将与Cygwin一起运行,因此您最好以Cygwin方式使用路径(C:\ MyServers \ Project1将转化为Cygw
16 2023-12-05
编程技术问答社区
Dotcloud nodejs supervisord.conf不工作
我一直在尝试使我的nodejs服务器流程由主管监视,但是我遇到的问题让susperisord.conf工作.部署时,我会收到以下错误: WARNING: The service crashed at startup or is listening to the wrong port. It failed to respond on port "node" (42801) within 30 seconds. Please check the application logs. 但是,当我进入dotcloud服务器并手动启动nodejs进程时,它运行良好,表明主管未能启动节点实例. 我的Substisord.conf看起来像这样: [program:node] command = node /home/dotcloud/current/app/server.js autostart=true autorestart=true 我的目录结构如下: .dotcl
6 2023-11-30
编程技术问答社区
supervisor.conf默认位置
我试图进行自动部署,包括主管,并通过默认设置路径混淆. 我发现的每个部署方案都使用/etc/supervisor/supervisor.conf和/etc/supervisor/conf.d/没有任何预设和链接,此外,在通过apt-get安装主管软件包后,此路径确实通过示例配置填充. 在此示例示例流程看起来像这样没有任何链接和创建/etc/supervisor.conf之类的东西: sudo('apt-get -y install supervisor') put('config/supervisor_gunicorn.conf', '/etc/supervisor/conf.d/gunicorn.conf', use_sudo=True) sudo('supervisorctl reload') 但是在supervisorctl中,此路径未指定为默认值,并且假定默认位置在/etc/supervisor.conf so a aroud /etc/supervisor
4 2023-11-30
编程技术问答社区
如何在监督员中使用virtualenvwrapper?
当我开发和测试项目时,我曾经使用virtualenvwrapper来管理环境并运行它: workon myproject python myproject.py 当然,一旦我在正确的Virtualenv中,我就使用了正确的Python版本,其他相应的库来运行项目. 现在,我想使用Subsevisord来管理与准备部署相同的项目.问题是,在执行脚本之前,告诉Substisord激活正确的Virtualenv的正确方法是什么?我需要编写一个执行此操作的单独的bash脚本,然后在" Substisord配置文件"的命令字段中调用该脚本? 解决方案 从命令行使用Virtualenv的一种方法是使用位于Virtualenv内部的python可执行文件. 对我来说,我在.virtualenvs目录中有我的虚拟设备.例如 /home/ubuntu/.virtualenvs/yourenv/bin/python 无需workon 对于supervisor.
16 2023-11-30
编程技术问答社区
通过监督员监督virtualenv django应用程序
我正在尝试使用主管来管理我的django项目在Virtualenv内运行Gunicorn. 我的conf文件看起来像这样: [program:diasporamas] command=/var/www/django/bin/gunicorn_django directory=/var/www/django/django_test process_name=%(program_name)s user=www-data autostart=false stdout_logfile=/var/log/gunicorn_diasporamas.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=2 stderr_logfile=/var/log/gunicorn_diasporamas_errors.log stderr_logfile_maxbytes=1MB stderr_logfile_backups=2enter code
12 2023-11-19
编程技术问答社区
在conda环境中使用监督者和uwsgi的问题
我正在尝试使用UWSGI + Supersisor + nginx运行烧瓶应用. uwsgi安装在conda env中,没有主管,我可以在没有问题的情况下运行我的应用程序,即如果我运行(使用我的conda enved激活): uwsgi --ini /home/me/Development/flask/myflaskapp/myflaskapp.ini 使用以下配置: /home/me/development/flask/myflaskapp/myflaskapp.ini [uwsgi] chmod-socket = 666 socket = /home/me/Development/flask/myflaskapp/run/myflaskapp.sock module = wsgi callable = app vim/etc/etc/nginx/sites-vailable/myflaskapp server { listen 8000;
28 2023-11-12
编程技术问答社区