我正在嘗試編寫一個在另一臺服務器上運行的python腳本,這樣即使我在我的PC終端上關閉了我的服務器連接,它也會繼續在該服務器上運行。當腳本保持活動狀態時,它運行無限期地監聽網站(UI)上的任何事件,在事件發生時它會適當地啓動某些泊塢窗並繼續收聽PosgreSQL事件。無限地在後臺運行Python腳本
當我嘗試使用nohup
(在後臺運行腳本)時,它確實在後臺運行,但無法偵聽任何事件。有沒有人從事過類似的工作?請分享你的想法。 我正在分享我的腳本的一部分。
self.pool = await asyncpg.create_pool(user='alg_user',password='algy',database='alg',host='brain',port=6543)
async with self.pool.acquire() as conn:
def enqueue_listener(*args):
self.queue.put_nowait(args)
await conn.add_listener('task_created', enqueue_listener)
print("Added the listener")
while True:
print("---- Listening for new job ----")
conn2, pid, channel, payload = await self.queue.get()
x = re.sub("[^\w]", " ", payload).split()
print(x)
if x[5] == '1':
tsk = 'TASK_ID=%s' % str(x[1])
if x[3] == '1':
command = "docker run --rm -it -e ALGORITHM_ID=1 -e TASK_ID=%s --network project_default project/docked_prol:1.0" % (str(x[1]))
subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
if x[3] == '8':
command = "docker run --rm -it -e ALGORITHM_ID=8 -e TASK_ID=%s --network project_default project/docked_pro:1.0" % (str(x[1]))
subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
腳本在手動運行時運行得非常好,但只需要一些建議和實施方法。
嘗試在屏幕會話內啓動嗎?你確定你在後臺運行這個進程,而不是暫停進程? – wmorrell
我使用'nohup'命令來運行(https://stackoverflow.com/questions/2975624/how-to-run-a-python-script-in-the-background-even-after-i-logout- SSH)。我以此爲參考。 –