我需要製作將在後臺運行的腳本,腳本將始終打開與memcached服務器的連接並從其他程序獲取參數,當recive parametar腳本執行時一些工作並將一些信息輸出回第一個程序。 我最大的問題是如何使腳本在後臺運行並等待參數?Python:在後臺運行腳本並執行輸入/輸出
0
A
回答
0
不知道你是如何從其他程序獲取參數的,或者你是如何等待的,很難給出具體的答案。
爲了說明方便,我們假設它正在偵聽到端口6789的TCP連接,而另一個程序只是連接到該套接字併發送固定數量的參數,並用換行符分隔。
要做到這一點最簡單的方法是隻塊:
memcache_connection = # however you set this up
sock = socket.socket()
sock.bind(('', 6789))
sock.listen(5)
while True:
conn, addr = sock.accept()
with contextlib.closing(conn) as client:
with client.makefile() as f:
param1, param2, param3 = f
result = do_memcache_stuff(memcache_connection, param1, param2, param3)
client.sendall(result)
顯然沒有錯誤處理這裏,沒辦法退出比其他^ C,但這些東西是很容易添加。
更嚴重的是,它一次只能處理一個命令。如果這是一個問題,那麼通常有兩種選擇:線程化或事件循環。如果您不需要在兩個客戶端連接之間共享信息,並且一次不需要處理多個數字,則線程通常更簡單。你所要做的就是將處理函數包裝在一個函數中,然後產生它。所以:
def handle_client(conn):
with contextlib.closing(conn) as client:
with client.makefile() as f:
param1, param2, param3 = f
result = do_memcache_stuff(memcache_connection, param1, param2, param3)
client.sendall(result)
memcache_connection = # however you set this up
sock = socket.socket()
sock.bind(('', 6789))
sock.listen(5)
while True:
conn, addr = sock.accept()
t = threading.Thread(target=handle_client, args=(conn,))
t.daemon = True
t.start()
0
你想要做什麼叫做多線程,蟒蛇文檔閱讀起來就可以了還是自己試試它了:從其他程序
import threading
相關問題
- 1. 運行腳本並執行PHP輸出
- 2. 輸出文件沒有創建在後臺運行python腳本
- 3. 如何在後臺運行shell腳本並得不到輸出
- 4. 在後臺運行Python HTTPServer並繼續執行腳本
- 5. 如何遠程運行python腳本並輸出輸出
- 6. 從Python執行腳本讀取輸出
- 7. Python腳本輸出到控制檯,即使它在後臺運行
- 8. 如何從運行在php腳本後執行shell的輸出執行跳轉?
- 9. 用網站輸入運行python腳本
- 10. PHP通過輸入運行Python腳本
- 11. 在init.d後臺執行python腳本
- 12. Python腳本只在執行後輸出到瀏覽器
- 13. 雙輸入運行腳本
- 14. 在Python中運行一個腳本幾次並保存輸出
- 15. 在後臺運行Python腳本
- 16. 在後臺運行python腳本
- 17. Python腳本一直在後臺運行
- 18. 使用GUI輸入變量並在Python中運行腳本
- 19. 在後臺運行腳本?
- 20. 在後臺運行腳本
- 21. 在bash腳本中運行PBS腳本和後處理輸出
- 22. 如何在運行時輸入python代碼並執行它?
- 23. 執行python腳本並將輸出保存爲CSV文件
- 24. 如何讓Python腳本在執行後運行powershell腳本
- 25. 作爲Windows腳本命令執行Python腳本的輸出
- 26. 在輸出文件上運行腳本
- 27. 通過python腳本在命令行中執行sbt並輸出到文件
- 28. 當通過ant腳本運行junit時在控制檯上輸出輸出
- 29. 從正在運行的python腳本讀取輸出的Linux python
- 30. 運行Python腳本並行
它是如何獲得的參數?從套接字? – abarnert 2013-03-01 22:19:38
Soory我忘了說,我用簡單的命令行「.app.py --information」傳遞參數,我期待在一秒鐘內有大約1000-2000個參數(發送到那個腳本)... – Squirll 2013-03-01 22:47:23
如何傳遞參數在腳本已經運行的命令行上?這沒有任何意義。當然你可以編寫一個驅動腳本(在後臺運行)和一個控制腳本,例如'httpd'和'apachectl',你甚至可以將它們合併到同一個腳本中(所以它的作用就像驅動程序與一組參數,否則控制現有的驅動程序),但這聽起來不像你的建議。 – abarnert 2013-03-01 22:52:27