2016-09-06 2 views
1

(スレッディング)、私は1つのの.pyでそれらをミックスし、一緒に実行したい:を実行し、複数のサーバー、私はPythonで<strong>2のサーバ</strong>を持って

Server.pyを:

import logging, time, os, sys 
from yowsup.layers import YowLayerEvent, YowParallelLayer 
from yowsup.layers.auth import AuthError 
from yowsup.layers.network import YowNetworkLayer 
from yowsup.stacks.yowstack import YowStackBuilder 

from layers.notifications.notification_layer import NotificationsLayer 
from router import RouteLayer 

class YowsupEchoStack(object): 
    def __init__(self, credentials): 
     "Creates the stacks of the Yowsup Server," 
     self.credentials = credentials 
     stack_builder = YowStackBuilder().pushDefaultLayers(True) 

     stack_builder.push(YowParallelLayer([RouteLayer, NotificationsLayer])) 
     self.stack = stack_builder.build() 
     self.stack.setCredentials(credentials) 

    def start(self): 
     self.stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) 
     try: 
      logging.info("#" * 50) 
      logging.info("\tServer started. Phone number: %s" % self.credentials[0]) 
      logging.info("#" * 50) 
      self.stack.loop(timeout=0.5, discrete=0.5) 
     except AuthError as e: 
      logging.exception("Authentication Error: %s" % e.message) 
      if "<xml-not-well-formed>" in str(e): 
       os.execl(sys.executable, sys.executable, *sys.argv) 
     except Exception as e: 
      logging.exception("Unexpected Exception: %s" % e.message) 

if __name__ == "__main__": 
    import sys 
    import config 

    logging.basicConfig(stream=sys.stdout, level=config.logging_level, format=config.log_format) 
    server = YowsupEchoStack(config.auth) 
    while True: 
     # In case of disconnect, keeps connecting... 
     server.start() 
     logging.info("Restarting..") 

App.py:

import web 

urls = (
    '/', 'index' 
) 

app = web.application(urls, globals()) 

class index: 
    def GET(self): 
     greeting = "Hello World" 
     return greeting 

if __name__ == "__main__": 
    app.run() 

私は両方一緒に単一の.py Fから実行したいです一緒に。 ファイルを1つのファイルから実行しようとすると、のどちらかが起動し、他のファイルが最初に起動したときにのみ起動します。

を2台のサーバーで実行するにはどうすればよいですか?

+0

スレッドを調べましたか? – MooingRawr

+0

いいえ...私は糸通しに助けが必要です...それは私が言いたいことです。 – 9gagger

答えて

1
import thread 

def run_app1(): 
    #something goes here 

def run_app2(): 
    #something goes here 


if __name__=='__main__': 
    thread.start_new_thread(run_app1) 
    thread.start_new_thread(run_app2) 

あなたが行うことができます関数に引数を渡す必要がある場合:

thread.start_new_thread(run_app1, (arg1,arg2,....)) 

、あなたのスレッドでより多くの制御をしたい場合は、あなたが行くことができる:

import threading 
def app1(): 
    #something here 

def app2(): 
    #something here 

if __name__=='__main__': 
    t1 = threading.Thread(target=app1) 
    t2 = threading.Thread(target=app2) 
    t1.start() 
    t2.start() 

あなたがする必要がある場合あなたは行くことができますパスの引数:

t1 = threading.Thread(target=app1, args=(arg1,arg2,arg3.....)) 

スレッドとスレッドの違いは何ですか?スレッディングはスレッドよりもレベルの高いモジュールであり、3.xのスレッドは_threadに名前が変更されました... more info here:http://docs.python.org/library/threading.htmlしかし、それは私が推測する別の質問です。

あなたの場合は、最初のスクリプトと2番目のスクリプトを実行する関数を作成し、実行するスレッドを生成するだけです。

+0

私はこれを試してみます、ありがとう。 – 9gagger

+0

**それはうまくいった!**ありがとうたくさんの馬鹿。ドージェ軍はあなたに敬服します。 – 9gagger

+0

そのような誇大宣伝、多くのwow – MooingRawr

関連する問題