我有一个Django项目,正在使用pykafka。我在项目内部创建了两个名为producer.py和Consumer.py的文件。我必须将目录更改为存在这些文件夹的文件夹,然后从终端分别运行python producer.py和consumer.py。一切正常。
我在线部署了项目,并且Web应用程序正在运行,因此我想在后台自动运行生产者和使用者。我该怎么办?
编辑1:在生产服务器上,我执行了nohup python name_of_python_script.py &
在后台执行它。这暂时有效,但这是一个好的解决方案吗?
答案 0 :(得分:0)
您可以在MyKafkaConsumer.service
下创建具有以下内容的系统服务/etc/systemd/system
:
[Unit]
Description=A Kafka Consumer written in Python
After=network.target # include any other pre-requisites
[Service]
Type=simple
User=your_user
Group=your_user_group
WorkingDirectory=/path/to/your/consumer
ExecStart=python consumer.py
TimeoutStopSec=180
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
为了启动服务(并配置它以便在启动时运行),您应该运行
systemctl enable MyKafkaConsumer.service
systemctl start MyKafkaConsumer.service
要检查其状态:
systemctl status MyKafkaConsumer
并查看日志:
journactl -u MyKafkaConsumer -f
(或者,如果您想查看最后100行)
journalctl -u MyKafkaConsumer -n 100
您还需要为生产者创建类似的服务。
系统服务有很多选择。如果您需要任何进一步的说明,可以参考this article。不过,在网上不难找到指南和其他材料。