我如何在云环境中同时处理 运行 两个 python 脚本?

How would I go about running two python scripts at the same time in a cloud env?

我在一个文件中有一个 python 服务器,需要从另一个 python 文件获取 var。问题是,我需要它们在云环境中同时 运行。我需要启动第二个,以便它可以通过 API 获取一些数据,然后将其存储在 var 中。然后服务器需要启动,以便它可以启动、获取数据并将其传递给前端。我认为我的语法没问题,但我可以这样做吗?我在本地都尝试了 运行,但一无所获。我可以在云端执行此操作吗?

示例代码

文件b

import requests

response = ''
def get_data():
        global q
        url = 'apiURL'
        headers = {}
        response = requests.request('GET', url, data='payload', headers=headers)
        q.put(response)

文件一个

from threading import Thread
import helper
import queue

q = queue.Queue()

def start_helper():
        thread_process = Thread(target=helper.get_data)
        thread_process.start()

def get_results():
        global q
        result = q.get()
        return result

start_helper()
print("helper started")
result = get_results()
print("got results")
print(result)
print("ok")

我想您正在寻找的是线程。线程启用并行 processing/execution。假设您有两个 python 文件,a.pyb.py,第三个文件包含您的全局变量,名为 globals.py.

a.py 需要从 b.py 中进行的 api 调用中获取数据。您可以通过在 b.py 中声明调用 api 的函数来实现此目的,并在 a.py

中的线程中声明 运行 它

这是你的示例 globals.py 文件:

import queue

q = queue.Queue()

这是 b.py 文件中的示例代码:

from globals import q

#lots of Python stuff

#function to be called in thread
def my_api_call():
    #some api call made and result stored in a variable named 'result'
    global q
    q.put(result)

#lots of other Python stuff

这是 a.py 文件中的示例代码:

from threading import Thread
from globals import q
import b


def start_api_call_in_b():
        thread_process = Thread(target=b.my_api_call)
        thread_process.start()

def get_api_result_from_b():
        result = q.get()
        return result

start_api_call_in_b()
"""
.
.
.
do lots of other stuff
.
.
.
"""
result = get_api_result_from_b()
print(result)

这将导致 a.pyb.py 的函数进行线程调用并在全局队列中接收它的结果。当你想接收结果时,只需调用函数从队列中获取接收到的数据即可。

另请记住,在 b.py 内的函数之外编写的任何代码都将在导入时立即执行。