小编Ben*_*n K的帖子

Python“请求”在线程中不起作用/阻塞?

我已经requests在 python 2.7 中尝试过这个模块并且非常喜欢它,但是当我尝试在一个线程中使用它时,它似乎不起作用:

def doWork():
    try:
        print "before"
        requests.get('http://www.google.fr')
        print "after"
    except Exception as e:
        print "Error : "+ str(e)

# Working : I see "before" & "after"
doWork()

# Not working, i see "before" but never "after"
t = Thread(target=doWork)
t.start()
Run Code Online (Sandbox Code Playgroud)

我试过这种方式,但它是一样的:

class TestThread(Thread):
    def run(self):
        try:
            print "before"
            requests.get('http://www.google.fr')
            print "after"
        except Exception as e:
            print "Error : "+ str(e)

test_thread = TestThread()
test_thread.start() # I will see "before" but never "after"
test_thread.join()
Run Code Online (Sandbox Code Playgroud)

我试图等待几分钟(几小时),但它仍然无法正常工作;既没有after …

python multithreading visual-studio python-requests

5
推荐指数
1
解决办法
1482
查看次数

Flask发送流作为响应

我正试图用另一台服务器(Server#02)"代理"我的Flask服务器(我称之为Server#01).它运行良好除了一件事:当服务器#01使用send_from_directory()时,我不知道如何重新发送此文件.

我的经典"代理人"

result = requests.get(my_path_to_server01)
return Response(stream_with_context(result.iter_content()), 
                content_type = result.headers['Content-Type'])
Run Code Online (Sandbox Code Playgroud)

随着文件的响应,它需要几个小时...所以我尝试了很多东西.工作的人是:

result = requests.get(my_path_to_server01, stream=True)

with open('img.png', 'wb') as out_file:
    shutil.copyfileobj(result.raw, out_file)

return send_from_directory('./', 'img.png')
Run Code Online (Sandbox Code Playgroud)

我想"重定向"我的响应("结果"变量),或发送/复制我的文件流.无论如何我不想使用物理文件,因为它似乎不是我心中的正确方式,我可以想象所有可能因此发生的问题.

python proxy redirect flask

5
推荐指数
1
解决办法
7530
查看次数

Android Flow/StateFlow 和数据绑定/Room

我正在尝试弄清楚流/状态流和数据绑定。

\n

在我的项目中,我有 Room 中的“打印机”列表,以及 SharedPreferences 中的“默认打印机”的 ID。

\n

这是我的架构:\n在此输入图像描述

\n

1\xc2\xb0/ 问题:我在这个架构中表现良好?

\n

我是否使用了良好的流程并做得很好,还是出了什么问题?

\n

2\xc2\xb0/ 第一个问题:在我的列表中获取我的默认打印机

\n

房间给我一个Flow<List<Printer>>。借助我的适配器,我将其显示在回收器视图中viewModel.allPrinters.collect

\n

但是,当我想从房间绑定资源时,绑定“需要”LiveData 或 StateFlow,这是我的困难,因为 stateIn 需要协程。

\n

我怎样才能从我的默认打印机Flow<List<Printer>>(通过他的属性“id”在列表中找到它)并确保列表/项目是否更新,我的参考也将获得更新?\n如果我更改打印机的名称defaultPrinter并将其更新到 room(感谢我的存储库/room DAO),我希望在我的对象defaultPrinter和列表中更改名称。

\n

您还可以确认我的变量类型defaultPrinter应该是StateFlow<Printer?>

\n

注意:当我更新项目时,printerRoomDAO.update(item:Printer)我必须传递数据对象的副本Printer(新引用),否则我的 UI 将不会更新。

\n

3\xc2\xb0/ 第二个问题:使用状态流看起来很复杂

\n

isPrinterListEmpty这是我的 ViewModel 中的示例

\n
val hasNoPrinter = allPrinters.mapLatest {\n    it.isEmpty()\n}.asLiveData()\n
Run Code Online (Sandbox Code Playgroud)\n

它运行良好,但我不应该使用 StateFlow 吗?怎么做 ?因为stateIn()需要一个协程,而我下面的尝试不起作用。

\n
val hasNoPrinter = …
Run Code Online (Sandbox Code Playgroud)

data-binding kotlin android-livedata kotlin-flow kotlin-stateflow

1
推荐指数
1
解决办法
2643
查看次数