Bir arka plan işlemi yürüterek tweet almak için bu koda sahibim. Aşağıdaki komut dosyası, subprocess.Popen
işlevini kullanarak ana komut dosyasından çalıştırılır. Böylece ana komut dosyası, arka plan işlem komut dosyasını çağırdıktan sonra yürütmeyi durduracaktır.Ana komut dosyası durduğunda arka plan işleminden geçersiz bağımsız değişken hatası
def start_listner(unique_id, keyword, limit=200):
class CustomStreamListener(tweepy.StreamListener):
def __init__(self, api):
logger.info('runnning')
self.api = api
super(tweepy.StreamListener, self).__init__()
#setup rabbitMQ Connection
def on_status(self, status):
print status.text.encode('utf-8'), "\n"
#queue the tweet and writes the tweet to the log
def on_error(self, status_code):
#some code to not kill the stream
def on_timeout(self):
#some code to not kill the stream
sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
try:
logger.info('tracking started')
logger.info(keyword)
logger.info(type(keyword))
kw = keyword
sapi.filter(track=[kw]) # keeps listening to the streaming api
except Exception, err:
logger.info(kw) # fails at this place when main py stops
logger.info(err)
if __name__ == "__main__":
logger.info("just now started")
try:
a = str(sys.argv[1])
b = str(sys.argv[2])
#c = int(sys.argv[5])
logger.info(a)
logger.info(b)
except Exception, err:
logger.info("inside main")
start_listner(a, b)
en yüksek göre cevap here Ben tweetleri başarıyla eklenecektir böylece
import time
import subprocess
subprocess.Popen(["python", "StreamingAnalytics.py", 'SriLankaQ', 'lanka'])
print 'I could escape.........'
time.sleep(15)
bir uyku eklemiş (kod üstünde) StreamingAnalytics.py çağırmak üzere şu ana komut dosyasını kullanabilirsiniz olarak Bu süre boyunca RabbitMQ kuyruğu. Ancak ana komut dosyası durduğunda arka plan işlemi aşağıdaki hatayı yazdırır.
2015-12-22 16: 28: 16.559 - ana - INFO - {text ': 'RT @Dory: Lanka şarkı Hattı bling \ xf0 \ x9F \ x98 \ X82 \ xf0 \ x9F \ x98 \ X82 'kaynak': iPhone için u'Twitter '}
2015-12-22 16: 28: 17.752 - ana - INFO - lanka
2015-12-22 16:28 : 17,752 - main - BİLGİ - [Errno 22] Geçersiz Bağımsız değişken
GÜNCELLEME: Ben onun argümanları iletme bir sorunu düşünce beri ana komut dosyası tarafından bir dosyaya yazma ve arka plan işlemi dosyasından dosyayı okuyarak argümanlar kullanımını kaldırıldı. Bu yüzden hala aynı hata geliyor. Geri tepme modülünü kullanarak bu hata hakkında daha fazla bilgi basabilirim.
2015-12-24 11:01:16,562 - __main__ - INFO - Traceback (most recent call last):
File "StreamingAnalytics.py", line 84, in <module>
sapi.filter(track=[keyword])
File "C:\Python27\lib\site-packages\tweepy\streaming.py", line 445, in filter
self._start(async)
File "C:\Python27\lib\site-packages\tweepy\streaming.py", line 361, in
_start
self._run()
File "C:\Python27\lib\site-packages\tweepy\streaming.py", line 294, in _run
raise exception IOError: [Errno 22] Invalid argument
Bu yüzden af değiştirmek zorunda kaldı ew şeyler, ama [benim örneğim] (https://gist.github.com/waynew/c47fe03405e451709906) benim için gayet iyi çalışıyor. Bu senin için de geçerli mi? Çalıştığınız ilk örnek başlatıcınız var (yani "subprocess.Popen ([" python "," StreamingAnalytics.py "," SriLankaQ "," lanka "]))) –
" StreamingAnalytics.py "'inizi çalıştırabilirsiniz. 'subprocess.Popen' kullanmadan doğrudan çağırıyor? (yani terminalleki python StreamingAnalytics.py) çağrısı – Jon
@WayneWerner Şimdi çalışıyor! "On_status" işlevinin içinde bir baskı bildirimim var. Çalıştığımda onu kaldırdığımda. Bunu da soruma dahil ettim. Bence sorun bununla ilgili. Her neyse, bunun bana çalışmasına neden olan cevabınız. Bir açıklama olarak yanıt olarak eklerseniz, yazdırmayı kaldırırken neden işe yarayacaktır. Doğru cevap olarak kabul etmekten mutluluk duyarım. –