gpt4 book ai didi

python - linux (Ubuntu) 系统服务错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:55 25 4
gpt4 key购买 nike

我正在尝试在 Ubuntu 中创建服务,但出现错误。

我写了下面的代码-

FileSystemWatcher.py

import requests
import json
import logging
import sys
import os
import datetime
from watchdog.events import PatternMatchingEventHandler


class DirectoryChangedHandler(PatternMatchingEventHandler):

patterns = ["*.json","*.csv"]

logFileName = datetime.datetime.now().strftime('%Y%m%d_log.log')
script_dir = os.path.dirname(__file__) # <-- absolute dir the script is in
rel_path = "log/"+logFileName
abs_logfile_path = os.path.join(script_dir, rel_path)

appConfigFilePath = os.path.abspath('config/app_config.json')
with open(appConfigFilePath) as data_file:
config = json.load(data_file)
logging.basicConfig(filename=abs_logfile_path, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.NOTSET)

def process(self, event):

print event.src_path, event.event_type
try:

filelist = [('files', open(event.src_path, 'rb'))]
postUrl = self.config["apiBaseUrl"].encode('utf-8')+self.config["fileUplaodApiUrl"].encode('utf-8')
uploadResponse = requests.post(postUrl, files=filelist)
if uploadResponse.status_code == 200:
print "Upload Successful - ", event.src_path
else:
print "Upload Failed - ", event.src_path
except:
print "Unexpected error:", sys.exc_info()[0]
pass

def on_modified(self, event):
self.process(event)

def on_created(self, event):
self.process(event)

workflow.py-

#!/usr/bin/python2.7

import sys
import time
from watchdog.observers import Observer

import FileSystemWatcher as fSystemWatcher


if __name__ == '__main__':
args = sys.argv[1:]
observer = Observer()
observer.schedule(fSystemWatcher.DirectoryChangedHandler(), path=args[0] if args else '.', recursive=True)
observer.start()

try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()

observer.join()

(/lib/systemd/system/FileWatcherSystemd.service)

[Unit]
Description=FileChangeService

[Service]
Type=forking
WorkingDirectory= /home/ashish/Documents/FileSystemWatcher
ExecStart= /home/ashish/Documents/FileSystemWatcher/workflow.py
Restart=on-failure

[Install]
WantedBy=multi-user.target

但我收到以下错误-

FileWatcherSystemd.service - FileChangeService Loaded: loaded (/lib/systemd/system/FileWatcherSystemd.service; enabled; vendor preset: enabled) Active: inactive (dead) (Result: exit-code) since Wed 2017-07-19 10:44:39 IST; 8min ago Process: 6552 ExecStart=/home/ashish/Documents/FileSystemWatcher/FileSystemWatcher.py (code=exited, status=203/EXEC) Main PID: 6552 (code=exited, status=203/EXEC)

Jul 19 10:44:39 Ashish-PC systemd[1]: FileWatcherSystemd.service: Unit entered failed state. Jul 19 10:44:39 Ashish-PC systemd[1]: FileWatcherSystemd.service: Failed with result 'exit-code'. Jul 19 10:44:39 Ashish-PC systemd[1]: FileWatcherSystemd.service: Service hold-off time over, scheduling restart. Jul 19 10:44:39 Ashish-PC systemd[1]: Stopped FileChangeService. Jul 19 10:44:39 Ashish-PC systemd[1]: FileWatcherSystemd.service: Start request repeated too quickly. Jul 19 10:44:39 Ashish-PC systemd[1]: Failed to start FileChangeService.

我不知道我在 FileSytemWatcher.pyFileWatcherSystemd.service 中做错了什么

最佳答案

尝试将您的服务类型更改为简单。所以

type=simple

您的脚本似乎没有 fork 和退出。如果您的服务类型是 fork 的,systemd 会假设启动的进程 fork ,让某些东西在后台运行并退出。它会等到您的脚本运行完毕。

您的脚本没有退出,systemd 检测到这一点并给您超时错误。您的脚本似乎在无限循环中等待键盘中断。这种脚本可以“简单”地运行。这意味着 systemd 只是在后台启动脚本并继续启动序列而无需等待任何东西。

关于python - linux (Ubuntu) 系统服务错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45182651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com