2016-10-05 3 views
0

Я сделал два приложения:Связь между два питоном приложением

  1. Первым является пауком, который извлечет все ссылки с сайта.
  2. Вторая делает некоторые проверки по каждой ссылке, отправленной первым приложением.

Когда первое приложение находит ссылку, как я могу отправить уведомление или что-то еще во второе приложение?
Второе приложение должно постоянно слушать данные, отправленные первым приложением.

Я нашел несколько сообщений, говорящих о Queue, но я действительно не понимаю, как это работает.

Может ли кто-нибудь объяснить мне простой пример того, как общаться между двумя приложениями?

Спасибо-х

+0

Ни один из этих ответов не касается вашего вопроса? См. [_Что делать, когда кто-то отвечает на мой вопрос? _] (Http://stackoverflow.com/help/someone-answers) – martineau

ответ

0

Вы хотите сохранить один файл как «модуль», который будет импортирован в другой файл. Здесь это может быть реализовано с помощью ключевого слова import. Например, если вы назовете вторую часть вашего приложения listener.py, вы можете ввести import listener в другой файл (не забудьте разместить их в одной папке!) И вызвать любой метод из второго файла. You can read more on Python modules here.

+0

Если я это сделаю, первое приложение будет замедлен во время проверок. Мне нужно сделать эти проверки в другом приложении. – Pixel

+0

https://www.youtube.com/watch?v=0oTh1CXRaQ0 Это помогло мне очень хорошо понять модули и пакеты. Потратьте свое время и следуйте коду на своем компьютере, его стоит , – tesseract

+0

Я хочу разделить два приложения на процесс 2 не на том же – Pixel

0

Существует множество способов взаимодействия между процессами, но самым простым является использование файловой системы. Попросите вашего паука записать его в файл temp. Когда все будет готово, переместите его в папку, в которой ваш второй процесс опроса периодически и когда он найдет работу, а затем обработайте его.

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) 
0

Queue это просто контейнер, в котором элементы могут быть помещены и извлечены, часто в FIFO заказ. Модуль Queue в Python 2 - это просто реализация, поддерживающая синхронизированный доступ, что означает, что он поддерживает несколько потоков, используя его (помещая и получая вещи) одновременно.

Смежные вопросы