我已經做了兩個應用程序的之間:通信的兩個Python應用程序
- 第一個就是提取一個網站的所有鏈接蜘蛛。
- 第二個對第一個應用發送的每個鏈接都進行一些檢查。
當第一個應用程序找到一個鏈接時,我該如何向第二個應用程序發送通知或其他內容?
第二個應用程序必須連續監聽第一個應用程序發送的數據。
我發現幾個帖子說Queue
但我真的不明白這是如何工作。
有人可以解釋我與一個簡單的例子如何溝通這兩個應用程序?
感謝的
我已經做了兩個應用程序的之間:通信的兩個Python應用程序
當第一個應用程序找到一個鏈接時,我該如何向第二個應用程序發送通知或其他內容?
第二個應用程序必須連續監聽第一個應用程序發送的數據。
我發現幾個帖子說Queue
但我真的不明白這是如何工作。
有人可以解釋我與一個簡單的例子如何溝通這兩個應用程序?
感謝的
你想一個文件保存爲「模塊」被其他文件導入。這裏可以使用import
關鍵字來實現。例如,如果您命名應用程序的第二部分listener.py
,則可以在其他文件中鍵入import listener
(請記住將它們放在同一文件夾中!),並從第二個文件中調用任何方法。 You can read more on Python modules here.
有各種各樣的方法來完成進程間通信,但最簡單的是使用文件系統。讓你的蜘蛛把它輸出到臨時文件。完成後,將其移動到第二個進程定期輪詢的文件夾中,以及何時找到工作,然後對其進行處理。
的spider
可能喜歡的東西,如:
import tempfile, os
tmpname = ''
with tempfile.NamedTemporaryFile(delete=False) as tmp:
tmpname = tmp.name
tmp.write("spider output....\n")
tgt = os.path.join('incoming', os.path.basename(tmpname))
os.rename(tmpname, tgt)
第二個過程可能是這個樣子:
import time, os
while 1:
time.sleep(5)
for item in os.listdir('incoming'):
work_item = os.path.join('incoming', item)
with open(work_item) as fin:
# do something with item
os.unlink(work_item)
這些答案中沒有任何一個能解決您的問題嗎?請參閱[如果有人回答我的問題,我應該怎麼做?](http://stackoverflow.com/help/someone-answers) – martineau