python - 如何使用bash启动多个tornado实例

标签 python bash port tornado

我有一个 Tornado 服务器,我想在不同的端口上启动多个实例,因此我创建了以下 bash 文件来启动 3 个实例。

#!/bin/bash

#start tornado instances in different ports
python startup.py --port="8081"
python startup.py --port="8082"
python startup.py --port="8083"

正如你所看到的,上面的代码是有问题的,因为第一个命令会阻塞第二个命令。 那么有人知道如何一起开始 3 吗? 提前致谢。

最佳答案

如果您需要仅在当前 session 中运行它们,请添加 &每行末尾:

python startup.py --port="8081" &
python startup.py --port="8082" &
python startup.py --port="8083" &

但是用systemd就方便多了, upstart或其他初始化系统,因为它为您提供了一种简单的方法 start , stoprestart您的实例。

如果您需要示例,我将更新此答案。

<小时/>

更新

只要您使用 OS X,您就可以使用默认的 init 系统 – launchd .

第 1 步 – 为您的作业创建配置文件:

vim /Library/LaunchDaemons/my_job.plist

文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>my.awesome.label</string>

        <key>ProgramArguments</key>
        <array>
                <string>/usr/bin/python</string>
                <string>/Users/ivanvinogradov/tort.py</string>
        </array>

        <key>OnDemand</key>
        <false/>

        <key>UserName</key>
        <string>ivanvinogradov</string>

        <key>StartInterval</key>
        <integer>60</integer>

        <key>StandardErrorPath</key>
        <string>/tmp/AlTest1.err</string>

        <key>StandardOutPath</key>
        <string>/tmp/AlTest1.out</string>
</dict>
</plist>

通往您的 .py 的路径脚本转到<key>ProgramArguments</key> .
将运行您作业的用户名输入 <key>UserName</key>部分。
另请注意 <key>Label</key>部分为必填项。

第 2 步 – 确保 .plist文件具有适当的权限:

sudo chown root:wheel /Library/LaunchDaemons/my_job.plist
sudo chmod 600 /Library/LaunchDaemons/my_job.plist

第 3 步 – 开始和停止您的工作:

sudo launchctl load -w /Library/LaunchDaemons/my_job.plist
sudo launchctl unload /Library/LaunchDaemons/my_job.plist

这是 launchd 的一个非常简单的示例。您可以在此处了解更多信息 SO 或 Apple doc page .

关于python - 如何使用bash启动多个tornado实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50415390/

相关文章:

python - 如何删除文件和文件夹但保留目录结构并留下一个空文件而不是文件本身?

linux - 在 Linux 中比较值

docker - Docker 中的 "expose"和 "publish"有什么区别?

java - 如何在Spring Servlet中获取远程HTTP端口号?

python - 如何将类构造函数传递给 python 函数

python - 正则表达式不替换以 "."开头或以 "+"结尾的单词,如 ".NET"或 "C++"

python - 调试在 Gunicorn 中运行的 Flask 应用程序

Python 正则表达式问题

bash - 向标准输出添加空格

amazon-web-services - AWS将elb的8000端口转发到EC2的8000端口