上篇文章讲了 如何在java中执行python代码,这篇文章讲一下如何让jython支持三方依赖包
1.什么是Jython?
Jython是Python编程语言的JVM实现。 它旨在在Java平台上运行。 Jython程序可以导入和使用任何Java类。 就像Java一样,Jython程序编译为bytecode 。 其中一个主要优点是用Python设计的用户界面可以使用AWT , Swing或SWT Package GUI元素。
Jython以JPython开头,后来被重命名,紧跟着Guido Van Rossum创建的标准Python实现CPython 。 Jython由Jim Hugunin于1997年创立。 Jython 2.0于1999年发布。从那时起,Jython 2.x版本对应于等效的CPython版本。 2015年5月发布的Jython 2.7.0对应于CPython 2.7。 Jython 3.x的开发正在进行中。
Python和Java之间的区别
以下是Python和Java之间的区别 -
- Python是一种动态类型语言。 因此,不需要变量的类型声明。 另一方面,Java是一种静态类型语言,这意味着变量的类型声明是强制性的,不能更改。
- Python只有未经检查的异常,而Java同时检查和取消选中异常。
- Python使用缩进进行作用域,而Java使用匹配的大括号。
- 由于Python是一种基于解释器的语言,因此它没有单独的编译步骤。 但是,Java程序需要编译为字节码,然后由JVM执行。
- Python支持多重继承,但在Java中,多重继承是不可能的。 然而,它具有接口的实现。
- 与Java相比,Python具有更丰富的内置数据结构(列表,dicts,元组,一切都是对象)。
Python和Jython之间的区别
以下是Python和Jython之间的区别 -
- Python的参考实现,称为CPython,是用C语言编写的。 另一方面,Jython完全用Java编写,是一个JVM实现。
- 标准Python可在多个平台上使用。 Jython适用于安装了JVM的任何平台。
- 标准Python代码编译为.pyc文件,而Jython程序编译为.class文件。
- Python扩展可以用C语言编写。 Jython的扩展是用Java编写的。
- Jython本质上是真正的多线程。 然而,Python使用Global Interpreter Lock (GIL)机制来实现此目的。
- 两种实现都有不同的垃圾收集机制。
2.代码工程
pom.xml
<!--jython-->
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.3</version>
</dependency>
python2源代码
请确保在本地Python2环境中能运行,如果不存在包请用pip install {package}
import sys
print(sys.path)
import json
#coding:utf-8
import urllib
from contextlib import closing
def fetch_posts():
print("1111");
url = 'http://jsonplaceholder.typicode.com/posts'
try:
with closing(urllib.urlopen(url)) as response:
if response.getcode() == 200:
source = response.read()
posts = json.loads(source)
print(posts)
return posts
else:
print("Failed to fetch posts due to HTTP error.")
except Exception as e:
print("error....");
print(e);
return None
fetch_posts();
java调用python
从Java运行Python脚本时出错可能是由于以下几个原因导致的:
- Python环境配置问题:Java调用Python脚本需要确保Python环境已正确安装并配置好。可以通过检查Python的安装路径、环境变量等来确认配置是否正确。
- Python脚本语法错误:Python脚本中可能存在语法错误,导致无法正确执行。可以通过查看错误提示信息或者使用Python的调试工具来定位并修复语法错误。
- Python依赖库缺失:Python脚本可能依赖一些第三方库,而这些库未安装或版本不匹配可能导致运行错误。可以通过使用pip命令安装缺失的依赖库或者更新已安装的库来解决问题。
- Java与Python的交互问题:Java调用Python脚本时,需要使用相关的库或工具来实现二者之间的交互。常见的方式包括使用ProcessBuilder类执行Python命令、使用Jython库直接在Java中运行Python代码等。
- 系统权限问题:Java程序执行Python脚本时可能由于权限不足而导致出错。可以尝试以管理员身份运行Java程序或者修改相关文件的权限来解决问题。
package com.et.python.util;
import org.python.util.PythonInterpreter;
import java.util.Properties;
public class JavaPosts {
public static void main(String[] args) {
Properties props = new Properties();
props.put("python.console.encoding", "UTF-8"); // Used to prevent: console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.
props.put("python.security.respectJavaAccessibility", "false"); //don't respect java accessibility, so that we can access protected members on subclasses
props.put("python.import.site","false");
Properties preprops = System.getProperties();
PythonInterpreter.initialize(preprops, props, new String[0]);
PythonInterpreter interp = new PythonInterpreter();
interp.exec("import sys");
interp.exec("sys.path.append('D:\\huiyida\\develop\\python\\python312.zip')");
interp.exec("sys.path.append('D:\\huiyida\\develop\\python\\DLLs')");
interp.exec("sys.path.append('D:\\huiyida\\develop\\python\\Lib')");
interp.exec("sys.path.append('D:\\huiyida\\develop\\python')");
interp.exec("sys.path.append('D:\\huiyida\\develop\\python\\Lib\\site-packages')");
// interp.exec("sys.path.append('F:/workspace/wxserver/WebContent/py')");//我们自己写的
interp.execfile("D:\\IdeaProjects\\ETFramework\\python\\src\\main\\resources\\py\\posts.py");
}
}
以上只是一些关键代码,所有代码请参见下面代码仓库
代码仓库
3.测试
执行JavaPosts类里面的mian方法,控制台输出返回接口返回结果
['D:\\jar_repository\\org\\python\\jython-standalone\\2.7.3\\Lib', 'D:\\jar_repository\\org\\python\\jython-standalone\\2.7.3\\jython-standalone-2.7.3.jar/Lib', '__classpath__', '__pyclasspath__/', 'D:\\huiyida\\develop\\python\\python312.zip', 'D:\\huiyida\\develop\\python\\DLLs', 'D:\\huiyida\\develop\\python\\Lib', 'D:\\huiyida\\develop\\python', 'D:\\huiyida\\develop\\python\\Lib\\site-packages']
16:39:52.082 [MainThread] DEBUG org.python.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework
16:39:52.106 [MainThread] DEBUG org.python.netty.util.ResourceLeakDetector - -Dorg.python.netty.leakDetection.level: simple
16:39:52.107 [MainThread] DEBUG org.python.netty.util.ResourceLeakDetector - -Dorg.python.netty.leakDetection.targetRecords: 4
16:39:52.122 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - -Dio.netty.noUnsafe: false
16:39:52.122 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - Java version: 8
16:39:52.124 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available
16:39:52.124 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.copyMemory: available
16:39:52.125 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - java.nio.Buffer.address: available
16:39:52.125 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - direct buffer constructor: available
16:39:52.126 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - java.nio.Bits.unaligned: available, true
16:39:52.126 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9
16:39:52.126 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent0 - java.nio.DirectByteBuffer.<init>(long, int): available
16:39:52.126 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent - sun.misc.Unsafe: available
16:39:52.126 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent - -Dio.netty.tmpdir: C:\Users\Dell\AppData\Local\Temp (java.io.tmpdir)
16:39:52.126 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent - -Dio.netty.bitMode: 64 (sun.arch.data.model)
16:39:52.127 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent - Platform: Windows
16:39:52.128 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent - -Dio.netty.maxDirectMemory: 7572291584 bytes
16:39:52.128 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent - -Dio.netty.uninitializedArrayAllocationThreshold: -1
16:39:52.129 [MainThread] DEBUG org.python.netty.util.internal.CleanerJava6 - java.nio.ByteBuffer.cleaner(): available
16:39:52.129 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent - -Dio.netty.noPreferDirect: false
16:39:52.129 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numHeapArenas: 24
16:39:52.129 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numDirectArenas: 24
16:39:52.129 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.pageSize: 8192
16:39:52.129 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxOrder: 11
16:39:52.129 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.chunkSize: 16777216
16:39:52.129 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.smallCacheSize: 256
16:39:52.129 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.normalCacheSize: 64
16:39:52.129 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedBufferCapacity: 32768
16:39:52.130 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimInterval: 8192
16:39:52.130 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimIntervalMillis: 0
16:39:52.130 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.useCacheForAllThreads: true
16:39:52.130 [MainThread] DEBUG org.python.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023
16:39:52.133 [MainThread] DEBUG org.python.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024
16:39:52.133 [MainThread] DEBUG org.python.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096
16:39:52.166 [MainThread] DEBUG org.python.netty.channel.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 24
16:39:52.302 [MainThread] DEBUG org.python.netty.channel.nio.NioEventLoop - -Dio.netty.noKeySetOptimization: false
16:39:52.302 [MainThread] DEBUG org.python.netty.channel.nio.NioEventLoop - -Dio.netty.selectorAutoRebuildThreshold: 512
16:39:52.309 [MainThread] DEBUG org.python.netty.util.internal.PlatformDependent - org.jctools-core.MpscChunkedArrayQueue: available
16:39:52.573 [MainThread] DEBUG org.python.netty.buffer.ByteBufUtil - -Dio.netty.allocator.type: pooled
16:39:52.574 [MainThread] DEBUG org.python.netty.buffer.ByteBufUtil - -Dio.netty.threadLocalDirectBufferSize: 0
16:39:52.574 [MainThread] DEBUG org.python.netty.buffer.ByteBufUtil - -Dio.netty.maxThreadLocalCharBufferSize: 16384
1111
16:39:53.197 [MainThread] DEBUG org.python.netty.channel.DefaultChannelId - -Dio.netty.processId: 26688 (auto-detected)
16:39:53.199 [MainThread] DEBUG org.python.netty.util.NetUtil - -Djava.net.preferIPv4Stack: false
16:39:53.199 [MainThread] DEBUG org.python.netty.util.NetUtil - -Djava.net.preferIPv6Addresses: false
16:39:53.340 [MainThread] DEBUG org.python.netty.util.NetUtilInitializations - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1)
16:39:53.341 [MainThread] DEBUG org.python.netty.util.NetUtil - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200
16:39:53.463 [MainThread] DEBUG org.python.netty.channel.DefaultChannelId - -Dio.netty.machineId: c0:25:a5:ff:fe:c4:9b:a3 (auto-detected)
16:39:53.649 [MainThread] DEBUG org.python.netty.buffer.AbstractByteBuf - -Dorg.python.netty.buffer.checkAccessible: true
16:39:53.650 [MainThread] DEBUG org.python.netty.buffer.AbstractByteBuf - -Dorg.python.netty.buffer.checkBounds: true
16:39:53.651 [MainThread] DEBUG org.python.netty.util.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: org.python.netty.util.ResourceLeakDetector@3caee3a8
16:39:53.656 [MainThread] DEBUG org.python.netty.util.Recycler - -Dio.netty.recycler.maxCapacityPerThread: 4096
16:39:53.656 [MainThread] DEBUG org.python.netty.util.Recycler - -Dio.netty.recycler.ratio: 8
16:39:53.656 [MainThread] DEBUG org.python.netty.util.Recycler - -Dio.netty.recycler.chunkSize: 32
16:39:53.656 [MainThread] DEBUG org.python.netty.util.Recycler - -Dio.netty.recycler.blocking: false
16:39:53.831 [Jython-Netty-Client-0] DEBUG org.python.netty.channel.DefaultChannelPipeline - Discarded inbound message PooledUnsafeDirectByteBuf(ridx: 0, widx: 2048, cap: 2048) that reached at the tail of the pipeline. Please check your pipeline configuration.
16:39:53.837 [Jython-Netty-Client-0] DEBUG org.python.netty.channel.DefaultChannelPipeline - Discarded message pipeline : [_socket$PythonInboundHandler$1#0, DefaultChannelPipeline$TailContext#0]. Channel : [id: 0xb9530677, L:/10.11.68.77:64917 - R:jsonplaceholder.typicode.com/104.21.59.19:80].
16:39:53.838 [Jython-Netty-Client-0] DEBUG org.python.netty.channel.DefaultChannelPipeline - Discarded inbound message PooledUnsafeDirectByteBuf(ridx: 0, widx: 26545, cap: 32768) that reached at the tail of the pipeline. Please check your pipeline configuration.
16:39:53.838 [Jython-Netty-Client-0] DEBUG org.python.netty.channel.DefaultChannelPipeline - Discarded message pipeline : [_socket$PythonInboundHandler$1#0, DefaultChannelPipeline$TailContext#0]. Channel : [id: 0xb9530677, L:/10.11.68.77:64917 - R:jsonplaceholder.typicode.com/104.21.59.19:80].
[{u'title': u'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', u'body': u'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto', u'userId': 1, u'id': 1}, {u'title': u'qui est esse', u'body': u'est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla', u'userId': 1, u'id': 2}, {u'title': u'ea molestias quasi exercitationem repellat qui ipsa sit aut', u'body': u'et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut', u'userId': 1, u'id': 3}, {u'title': u'eum et est occaecati', u'body': u'ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit', u'userId': 1, u'id': 4}, {u'title': u'nesciunt quas odio', u'body': u'repudiandae veniam quaerat sunt sed\nalias aut fugiat sit autem sed est\nvoluptatem omnis possimus esse voluptatibus quis\nest aut tenetur dolor neque', u'userId': 1, u'id': 5}, {u'title': u'dolorem eum magni eos aperiam quia', u'body': u'ut aspernatur corporis harum nihil quis provident sequi\nmollitia nobis aliquid molestiae\nperspiciatis et ea nemo ab reprehenderit accusantium quas\nvoluptate dolores velit et doloremque molestiae', u'userId': 1, u'id': 6}, {u'title': u'magnam facilis autem', u'body': u'dolore placeat quibusdam ea quo vitae\nmagni quis enim qui quis quo nemo aut saepe\nquidem repellat excepturi ut quia\nsunt ut sequi eos ea sed quas', u'userId': 1, u'id': 7}, {u'title': u'dolorem dolore est ipsam', u'body': u'dignissimos aperiam dolorem qui eum\nfacilis quibusdam animi sint suscipit qui sint possimus cum\nquaerat magni maiores excepturi\nipsam ut commodi dolor voluptatum modi aut vitae', u'userId': 1, u'id': 8}, {u'title': u'nesciunt iure omnis dolorem tempora et accusantium', u'body': u'consectetur animi nesciunt iure dolore\nenim quia ad\nveniam autem ut quam aut nobis\net est aut quod aut provident voluptas autem voluptas', u'userId': 1, u'id': 9}, {u'title': u'optio molestias id quia eum', u'body': u'quo et expedita modi cum officia vel magni\ndoloribus qui repudiandae\nvero nisi sit\nquos veniam quod sed accusamus veritatis error', u'userId': 1, u'id': 10}, {u'title': u'et ea vero quia laudantium autem', u'body': u'delectus reiciendis molestiae occaecati non minima eveniet qui voluptatibus\naccusamus in eum beatae sit\nvel qui neque voluptates ut commodi qui incidunt\nut animi commodi', u'userId': 2, u'id': 11}, {u'title': u'in quibusdam tempore odit est dolorem', u'body': u'itaque id aut magnam\npraesentium quia et ea odit et ea voluptas et\nsapiente quia nihil amet occaecati quia id voluptatem\nincidunt ea est distinctio odio', u'userId': 2, u'id': 12}, {u'title': u'dolorum ut in voluptas mollitia et saepe quo animi', u'body': u'aut dicta possimus sint mollitia voluptas commodi quo doloremque\niste corrupti reiciendis voluptatem eius rerum\nsit cumque quod eligendi laborum minima\nperferendis recusandae assumenda consectetur porro architecto ipsum ipsam', u'userId': 2, u'id': 13}, {u'title': u'voluptatem eligendi optio', u'body': u'fuga et accusamus dolorum perferendis illo voluptas\nnon doloremque neque facere\nad qui dolorum molestiae beatae\nsed aut voluptas totam sit illum', u'userId': 2, u'id': 14}, {u'title': u'eveniet quod temporibus', u'body': u'reprehenderit quos placeat\nvelit minima officia dolores impedit repudiandae molestiae nam\nvoluptas recusandae quis delectus\nofficiis harum fugiat vitae', u'userId': 2, u'id': 15}, {u'title': u'sint suscipit perspiciatis velit dolorum rerum ipsa laboriosam odio', u'body': u'suscipit nam nisi quo aperiam aut\nasperiores eos fugit maiores voluptatibus quia\nvoluptatem quis ullam qui in alias quia est\nconsequatur magni mollitia accusamus ea nisi voluptate dicta', u'userId': 2, u'id': 16}, {u'title': u'fugit voluptas sed molestias voluptatem provident', u'body': u'eos voluptas et aut odit natus earum\naspernatur fuga molestiae ullam\ndeserunt ratione qui eos\nqui nihil ratione nemo velit ut aut id quo', u'userId': 2, u'id': 17}, {u'title': u'voluptate et itaque vero tempora molestiae', u'body': u'eveniet quo quis\nlaborum totam consequatur non dolor\nut et est repudiandae\nest voluptatem vel debitis et magnam', u'userId': 2, u'id': 18}, {u'title': u'adipisci placeat illum aut reiciendis qui', u'body': u'illum quis cupiditate provident sit magnam\nea sed aut omnis\nveniam maiores ullam consequatur atque\nadipisci quo iste expedita sit quos voluptas', u'userId': 2, u'id': 19}, {u'title': u'doloribus ad provident suscipit at', u'body': u'qui consequuntur ducimus possimus quisquam amet similique\nsuscipit porro ipsam amet\neos veritatis officiis exercitationem vel fugit aut necessitatibus totam\nomnis rerum consequatur expedita quidem cumque explicabo', u'userId': 2, u'id': 20}, {u'title': u'asperiores ea ipsam voluptatibus modi minima quia sint', u'body': u'repellat aliquid praesentium dolorem quo\nsed totam minus non itaque\nnihil labore molestiae sunt dolor eveniet hic recusandae veniam\ntempora et tenetur expedita sunt', u'userId': 3, u'id': 21}, {u'title': u'dolor sint quo a velit explicabo quia nam', u'body': u'eos qui et ipsum ipsam suscipit aut\nsed omnis non odio\nexpedita earum mollitia molestiae aut atque rem suscipit\nnam impedit esse', u'userId': 3, u'id': 22}, {u'title': u'maxime id vitae nihil numquam', u'body': u'veritatis unde neque eligendi\nquae quod architecto quo neque vitae\nest illo sit tempora doloremque fugit quod\net et vel beatae sequi ullam sed tenetur perspiciatis', u'userId': 3, u'id': 23}, {u'title': u'autem hic labore sunt dolores incidunt', u'body': u'enim et ex nulla\nomnis voluptas quia qui\nvoluptatem consequatur numquam aliquam sunt\ntotam recusandae id dignissimos aut sed asperiores deserunt', u'userId': 3, u'id': 24}, {u'title': u'rem alias distinctio quo quis', u'body': u'ullam consequatur ut\nomnis quis sit vel consequuntur\nipsa eligendi ipsum molestiae et omnis error nostrum\nmolestiae illo tempore quia et distinctio', u'userId': 3, u'id': 25}, {u'title': u'est et quae odit qui non', u'body': u'similique esse doloribus nihil accusamus\nomnis dolorem fuga consequuntur reprehenderit fugit recusandae temporibus\nperspiciatis cum ut laudantium\nomnis aut molestiae vel vero', u'userId': 3, u'id': 26}, {u'title': u'quasi id et eos tenetur aut quo autem', u'body': u'eum sed dolores ipsam sint possimus debitis occaecati\ndebitis qui qui et\nut placeat enim earum aut odit facilis\nconsequatur suscipit necessitatibus rerum sed inventore temporibus consequatur', u'userId': 3, u'id': 27}, {u'title': u'delectus ullam et corporis nulla voluptas sequi', u'body': u'non et quaerat ex quae ad maiores\nmaiores recusandae totam aut blanditiis mollitia quas illo\nut voluptatibus voluptatem\nsimilique nostrum eum', u'userId': 3, u'id': 28}, {u'title': u'iusto eius quod necessitatibus culpa ea', u'body': u'odit magnam ut saepe sed non qui\ntempora atque nihil\naccusamus illum doloribus illo dolor\neligendi repudiandae odit magni similique sed cum maiores', u'userId': 3, u'id': 29}, {u'title': u'a quo magni similique perferendis', u'body': u'alias dolor cumque\nimpedit blanditiis non eveniet odio maxime\nblanditiis amet eius quis tempora quia autem rem\na provident perspiciatis quia', u'userId': 3, u'id': 30}, {u'title': u'ullam ut quidem id aut vel consequuntur', u'body': u'debitis eius sed quibusdam non quis consectetur vitae\nimpedit ut qui consequatur sed aut in\nquidem sit nostrum et maiores adipisci atque\nquaerat voluptatem adipisci repudiandae', u'userId': 4, u'id': 31}, {u'title': u'doloremque illum aliquid sunt', u'body': u'deserunt eos nobis asperiores et hic\nest debitis repellat molestiae optio\nnihil ratione ut eos beatae quibusdam distinctio maiores\nearum voluptates et aut adipisci ea maiores voluptas maxime', u'userId': 4, u'id': 32}, {u'title': u'qui explicabo molestiae dolorem', u'body': u'rerum ut et numquam laborum odit est sit\nid qui sint in\nquasi tenetur tempore aperiam et quaerat qui in\nrerum officiis sequi cumque quod', u'userId': 4, u'id': 33}, {u'title': u'magnam ut rerum iure', u'body': u'ea velit perferendis earum ut voluptatem voluptate itaque iusto\ntotam pariatur in\nnemo voluptatem voluptatem autem magni tempora minima in\nest distinctio qui assumenda accusamus dignissimos officia nesciunt nobis', u'userId': 4, u'id': 34}, {u'title': u'id nihil consequatur molestias animi provident', u'body': u'nisi error delectus possimus ut eligendi vitae\nplaceat eos harum cupiditate facilis reprehenderit voluptatem beatae\nmodi ducimus quo illum voluptas eligendi\net nobis quia fugit', u'userId': 4, u'id': 35}, {u'title': u'fuga nam accusamus voluptas reiciendis itaque', u'body': u'ad mollitia et omnis minus architecto odit\nvoluptas doloremque maxime aut non ipsa qui alias veniam\nblanditiis culpa aut quia nihil cumque facere et occaecati\nqui aspernatur quia eaque ut aperiam inventore', u'userId': 4, u'id': 36}, {u'title': u'provident vel ut sit ratione est', u'body': u'debitis et eaque non officia sed nesciunt pariatur vel\nvoluptatem iste vero et ea\nnumquam aut expedita ipsum nulla in\nvoluptates omnis consequatur aut enim officiis in quam qui', u'userId': 4, u'id': 37}, {u'title': u'explicabo et eos deleniti nostrum ab id repellendus', u'body': u'animi esse sit aut sit nesciunt assumenda eum voluptas\nquia voluptatibus provident quia necessitatibus ea\nrerum repudiandae quia voluptatem delectus fugit aut id quia\nratione optio eos iusto veniam iure', u'userId': 4, u'id': 38}, {u'title': u'eos dolorem iste accusantium est eaque quam', u'body': u'corporis rerum ducimus vel eum accusantium\nmaxime aspernatur a porro possimus iste omnis\nest in deleniti asperiores fuga aut\nvoluptas sapiente vel dolore minus voluptatem incidunt ex', u'userId': 4, u'id': 39}, {u'title': u'enim quo cumque', u'body': u'ut voluptatum aliquid illo tenetur nemo sequi quo facilis\nipsum rem optio mollitia quas\nvoluptatem eum voluptas qui\nunde omnis voluptatem iure quasi maxime voluptas nam', u'userId': 4, u'id': 40}, {u'title': u'non est facere', u'body': u'molestias id nostrum\nexcepturi molestiae dolore omnis repellendus quaerat saepe\nconsectetur iste quaerat tenetur asperiores accusamus ex ut\nnam quidem est ducimus sunt debitis saepe', u'userId': 5, u'id': 41}, {u'title': u'commodi ullam sint et excepturi error explicabo praesentium voluptas', u'body': u'odio fugit voluptatum ducimus earum autem est incidunt voluptatem\nodit reiciendis aliquam sunt sequi nulla dolorem\nnon facere repellendus voluptates quia\nratione harum vitae ut', u'userId': 5, u'id': 42}, {u'title': u'eligendi iste nostrum consequuntur adipisci praesentium sit beatae perferendis', u'body': u'similique fugit est\nillum et dolorum harum et voluptate eaque quidem\nexercitationem quos nam commodi possimus cum odio nihil nulla\ndolorum exercitationem magnam ex et a et distinctio debitis', u'userId': 5, u'id': 43}, {u'title': u'optio dolor molestias sit', u'body': u'temporibus est consectetur dolore\net libero debitis vel velit laboriosam quia\nipsum quibusdam qui itaque fuga rem aut\nea et iure quam sed maxime ut distinctio quae', u'userId': 5, u'id': 44}, {u'title': u'ut numquam possimus omnis eius suscipit laudantium iure', u'body': u'est natus reiciendis nihil possimus aut provident\nex et dolor\nrepellat pariatur est\nnobis rerum repellendus dolorem autem', u'userId': 5, u'id': 45}, {u'title': u'aut quo modi neque nostrum ducimus', u'body': u'voluptatem quisquam iste\nvoluptatibus natus officiis facilis dolorem\nquis quas ipsam\nvel et voluptatum in aliquid', u'userId': 5, u'id': 46}, {u'title': u'quibusdam cumque rem aut deserunt', u'body': u'voluptatem assumenda ut qui ut cupiditate aut impedit veniam\noccaecati nemo illum voluptatem laudantium\nmolestiae beatae rerum ea iure soluta nostrum\neligendi et voluptate', u'userId': 5, u'id': 47}, {u'title': u'ut voluptatem illum ea doloribus itaque eos', u'body': u'voluptates quo voluptatem facilis iure occaecati\nvel assumenda rerum officia et\nillum perspiciatis ab deleniti\nlaudantium repellat ad ut et autem reprehenderit', u'userId': 5, u'id': 48}, {u'title': u'laborum non sunt aut ut assumenda perspiciatis voluptas', u'body': u'inventore ab sint\nnatus fugit id nulla sequi architecto nihil quaerat\neos tenetur in in eum veritatis non\nquibusdam officiis aspernatur cumque aut commodi aut', u'userId': 5, u'id': 49}, {u'title': u'repellendus qui recusandae incidunt voluptates tenetur qui omnis exercitationem', u'body': u'error suscipit maxime adipisci consequuntur recusandae\nvoluptas eligendi et est et voluptates\nquia distinctio ab amet quaerat molestiae et vitae\nadipisci impedit sequi nesciunt quis consectetur', u'userId': 5, u'id': 50}, {u'title': u'soluta aliquam aperiam consequatur illo quis voluptas', u'body': u'sunt dolores aut doloribus\ndolore doloribus voluptates tempora et\ndoloremque et quo\ncum asperiores sit consectetur dolorem', u'userId': 6, u'id': 51}, {u'title': u'qui enim et consequuntur quia animi quis voluptate quibusdam', u'body': u'iusto est quibusdam fuga quas quaerat molestias\na enim ut sit accusamus enim\ntemporibus iusto accusantium provident architecto\nsoluta esse reprehenderit qui laborum', u'userId': 6, u'id': 52}, {u'title': u'ut quo aut ducimus alias', u'body': u'minima harum praesentium eum rerum illo dolore\nquasi exercitationem rerum nam\nporro quis neque quo\nconsequatur minus dolor quidem veritatis sunt non explicabo similique', u'userId': 6, u'id': 53}, {u'title': u'sit asperiores ipsam eveniet odio non quia', u'body': u'totam corporis dignissimos\nvitae dolorem ut occaecati accusamus\nex velit deserunt\net exercitationem vero incidunt corrupti mollitia', u'userId': 6, u'id': 54}, {u'title': u'sit vel voluptatem et non libero', u'body': u'debitis excepturi ea perferendis harum libero optio\neos accusamus cum fuga ut sapiente repudiandae\net ut incidunt omnis molestiae\nnihil ut eum odit', u'userId': 6, u'id': 55}, {u'title': u'qui et at rerum necessitatibus', u'body': u'aut est omnis dolores\nneque rerum quod ea rerum velit pariatur beatae excepturi\net provident voluptas corrupti\ncorporis harum reprehenderit dolores eligendi', u'userId': 6, u'id': 56}, {u'title': u'sed ab est est', u'body': u'at pariatur consequuntur earum quidem\nquo est laudantium soluta voluptatem\nqui ullam et est\net cum voluptas voluptatum repellat est', u'userId': 6, u'id': 57}, {u'title': u'voluptatum itaque dolores nisi et quasi', u'body': u'veniam voluptatum quae adipisci id\net id quia eos ad et dolorem\naliquam quo nisi sunt eos impedit error\nad similique veniam', u'userId': 6, u'id': 58}, {u'title': u'qui commodi dolor at maiores et quis id accusantium', u'body': u'perspiciatis et quam ea autem temporibus non voluptatibus qui\nbeatae a earum officia nesciunt dolores suscipit voluptas et\nanimi doloribus cum rerum quas et magni\net hic ut ut commodi expedita sunt', u'userId': 6, u'id': 59}, {u'title': u'consequatur placeat omnis quisquam quia reprehenderit fugit veritatis facere', u'body': u'asperiores sunt ab assumenda cumque modi velit\nqui esse omnis\nvoluptate et fuga perferendis voluptas\nillo ratione amet aut et omnis', u'userId': 6, u'id': 60}, {u'title': u'voluptatem doloribus consectetur est ut ducimus', u'body': u'ab nemo optio odio\ndelectus tenetur corporis similique nobis repellendus rerum omnis facilis\nvero blanditiis debitis in nesciunt doloribus dicta dolores\nmagnam minus velit', u'userId': 7, u'id': 61}, {u'title': u'beatae enim quia vel', u'body': u'enim aspernatur illo distinctio quae praesentium\nbeatae alias amet delectus qui voluptate distinctio\nodit sint accusantium autem omnis\nquo molestiae omnis ea eveniet optio', u'userId': 7, u'id': 62}, {u'title': u'voluptas blanditiis repellendus animi ducimus error sapiente et suscipit', u'body': u'enim adipisci aspernatur nemo\nnumquam omnis facere dolorem dolor ex quis temporibus incidunt\nab delectus culpa quo reprehenderit blanditiis asperiores\naccusantium ut quam in voluptatibus voluptas ipsam dicta', u'userId': 7, u'id': 63}, {u'title': u'et fugit quas eum in in aperiam quod', u'body': u'id velit blanditiis\neum ea voluptatem\nmolestiae sint occaecati est eos perspiciatis\nincidunt a error provident eaque aut aut qui', u'userId': 7, u'id': 64}, {u'title': u'consequatur id enim sunt et et', u'body': u'voluptatibus ex esse\nsint explicabo est aliquid cumque adipisci fuga repellat labore\nmolestiae corrupti ex saepe at asperiores et perferendis\nnatus id esse incidunt pariatur', u'userId': 7, u'id': 65}, {u'title': u'repudiandae ea animi iusto', u'body': u'officia veritatis tenetur vero qui itaque\nsint non ratione\nsed et ut asperiores iusto eos molestiae nostrum\nveritatis quibusdam et nemo iusto saepe', u'userId': 7, u'id': 66}, {u'title': u'aliquid eos sed fuga est maxime repellendus', u'body': u'reprehenderit id nostrum\nvoluptas doloremque pariatur sint et accusantium quia quod aspernatur\net fugiat amet\nnon sapiente et consequatur necessitatibus molestiae', u'userId': 7, u'id': 67}, {u'title': u'odio quis facere architecto reiciendis optio', u'body': u'magnam molestiae perferendis quisquam\nqui cum reiciendis\nquaerat animi amet hic inventore\nea quia deleniti quidem saepe porro velit', u'userId': 7, u'id': 68}, {u'title': u'fugiat quod pariatur odit minima', u'body': u'officiis error culpa consequatur modi asperiores et\ndolorum assumenda voluptas et vel qui aut vel rerum\nvoluptatum quisquam perspiciatis quia rerum consequatur totam quas\nsequi commodi repudiandae asperiores et saepe a', u'userId': 7, u'id': 69}, {u'title': u'voluptatem laborum magni', u'body': u'sunt repellendus quae\nest asperiores aut deleniti esse accusamus repellendus quia aut\nquia dolorem unde\neum tempora esse dolore', u'userId': 7, u'id': 70}, {u'title': u'et iusto veniam et illum aut fuga', u'body': u'occaecati a doloribus\niste saepe consectetur placeat eum voluptate dolorem et\nqui quo quia voluptas\nrerum ut id enim velit est perferendis', u'userId': 8, u'id': 71}, {u'title': u'sint hic doloribus consequatur eos non id', u'body': u'quam occaecati qui deleniti consectetur\nconsequatur aut facere quas exercitationem aliquam hic voluptas\nneque id sunt ut aut accusamus\nsunt consectetur expedita inventore velit', u'userId': 8, u'id': 72}, {u'title': u'consequuntur deleniti eos quia temporibus ab aliquid at', u'body': u'voluptatem cumque tenetur consequatur expedita ipsum nemo quia explicabo\naut eum minima consequatur\ntempore cumque quae est et\net in consequuntur voluptatem voluptates aut', u'userId': 8, u'id': 73}, {u'title': u'enim unde ratione doloribus quas enim ut sit sapiente', u'body': u'odit qui et et necessitatibus sint veniam\nmollitia amet doloremque molestiae commodi similique magnam et quam\nblanditiis est itaque\nquo et tenetur ratione occaecati molestiae tempora', u'userId': 8, u'id': 74}, {u'title': u'dignissimos eum dolor ut enim et delectus in', u'body': u'commodi non non omnis et voluptas sit\nautem aut nobis magnam et sapiente voluptatem\net laborum repellat qui delectus facilis temporibus\nrerum amet et nemo voluptate expedita adipisci error dolorem', u'userId': 8, u'id': 75}, {u'title': u'doloremque officiis ad et non perferendis', u'body': u'ut animi facere\ntotam iusto tempore\nmolestiae eum aut et dolorem aperiam\nquaerat recusandae totam odio', u'userId': 8, u'id': 76}, {u'title': u'necessitatibus quasi exercitationem odio', u'body': u'modi ut in nulla repudiandae dolorum nostrum eos\naut consequatur omnis\nut incidunt est omnis iste et quam\nvoluptates sapiente aliquam asperiores nobis amet corrupti repudiandae provident', u'userId': 8, u'id': 77}, {u'title': u'quam voluptatibus rerum veritatis', u'body': u'nobis facilis odit tempore cupiditate quia\nassumenda doloribus rerum qui ea\nillum et qui totam\naut veniam repellendus', u'userId': 8, u'id': 78}, {u'title': u'pariatur consequatur quia magnam autem omnis non amet', u'body': u'libero accusantium et et facere incidunt sit dolorem\nnon excepturi qui quia sed laudantium\nquisquam molestiae ducimus est\nofficiis esse molestiae iste et quos', u'userId': 8, u'id': 79}, {u'title': u'labore in ex et explicabo corporis aut quas', u'body': u'ex quod dolorem ea eum iure qui provident amet\nquia qui facere excepturi et repudiandae\nasperiores molestias provident\nminus incidunt vero fugit rerum sint sunt excepturi provident', u'userId': 8, u'id': 80}, {u'title': u'tempora rem veritatis voluptas quo dolores vero', u'body': u'facere qui nesciunt est voluptatum voluptatem nisi\nsequi eligendi necessitatibus ea at rerum itaque\nharum non ratione velit laboriosam quis consequuntur\nex officiis minima doloremque voluptas ut aut', u'userId': 9, u'id': 81}, {u'title': u'laudantium voluptate suscipit sunt enim enim', u'body': u'ut libero sit aut totam inventore sunt\nporro sint qui sunt molestiae\nconsequatur cupiditate qui iste ducimus adipisci\ndolor enim assumenda soluta laboriosam amet iste delectus hic', u'userId': 9, u'id': 82}, {u'title': u'odit et voluptates doloribus alias odio et', u'body': u'est molestiae facilis quis tempora numquam nihil qui\nvoluptate sapiente consequatur est qui\nnecessitatibus autem aut ipsa aperiam modi dolore numquam\nreprehenderit eius rem quibusdam', u'userId': 9, u'id': 83}, {u'title': u'optio ipsam molestias necessitatibus occaecati facilis veritatis dolores aut', u'body': u'sint molestiae magni a et quos\neaque et quasi\nut rerum debitis similique veniam\nrecusandae dignissimos dolor incidunt consequatur odio', u'userId': 9, u'id': 84}, {u'title': u'dolore veritatis porro provident adipisci blanditiis et sunt', u'body': u'similique sed nisi voluptas iusto omnis\nmollitia et quo\nassumenda suscipit officia magnam sint sed tempora\nenim provident pariatur praesentium atque animi amet ratione', u'userId': 9, u'id': 85}, {u'title': u'placeat quia et porro iste', u'body': u'quasi excepturi consequatur iste autem temporibus sed molestiae beatae\net quaerat et esse ut\nvoluptatem occaecati et vel explicabo autem\nasperiores pariatur deserunt optio', u'userId': 9, u'id': 86}, {u'title': u'nostrum quis quasi placeat', u'body': u'eos et molestiae\nnesciunt ut a\ndolores perspiciatis repellendus repellat aliquid\nmagnam sint rem ipsum est', u'userId': 9, u'id': 87}, {u'title': u'sapiente omnis fugit eos', u'body': u'consequatur omnis est praesentium\nducimus non iste\nneque hic deserunt\nvoluptatibus veniam cum et rerum sed', u'userId': 9, u'id': 88}, {u'title': u'sint soluta et vel magnam aut ut sed qui', u'body': u'repellat aut aperiam totam temporibus autem et\narchitecto magnam ut\nconsequatur qui cupiditate rerum quia soluta dignissimos nihil iure\ntempore quas est', u'userId': 9, u'id': 89}, {u'title': u'ad iusto omnis odit dolor voluptatibus', u'body': u'minus omnis soluta quia\nqui sed adipisci voluptates illum ipsam voluptatem\neligendi officia ut in\neos soluta similique molestias praesentium blanditiis', u'userId': 9, u'id': 90}, {u'title': u'aut amet sed', u'body': u'libero voluptate eveniet aperiam sed\nsunt placeat suscipit molestias\nsimilique fugit nam natus\nexpedita consequatur consequatur dolores quia eos et placeat', u'userId': 10, u'id': 91}, {u'title': u'ratione ex tenetur perferendis', u'body': u'aut et excepturi dicta laudantium sint rerum nihil\nlaudantium et at\na neque minima officia et similique libero et\ncommodi voluptate qui', u'userId': 10, u'id': 92}, {u'title': u'beatae soluta recusandae', u'body': u'dolorem quibusdam ducimus consequuntur dicta aut quo laboriosam\nvoluptatem quis enim recusandae ut sed sunt\nnostrum est odit totam\nsit error sed sunt eveniet provident qui nulla', u'userId': 10, u'id': 93}, {u'title': u'qui qui voluptates illo iste minima', u'body': u'aspernatur expedita soluta quo ab ut similique\nexpedita dolores amet\nsed temporibus distinctio magnam saepe deleniti\nomnis facilis nam ipsum natus sint similique omnis', u'userId': 10, u'id': 94}, {u'title': u'id minus libero illum nam ad officiis', u'body': u'earum voluptatem facere provident blanditiis velit laboriosam\npariatur accusamus odio saepe\ncumque dolor qui a dicta ab doloribus consequatur omnis\ncorporis cupiditate eaque assumenda ad nesciunt', u'userId': 10, u'id': 95}, {u'title': u'quaerat velit veniam amet cupiditate aut numquam ut sequi', u'body': u'in non odio excepturi sint eum\nlabore voluptates vitae quia qui et\ninventore itaque rerum\nveniam non exercitationem delectus aut', u'userId': 10, u'id': 96}, {u'title': u'quas fugiat ut perspiciatis vero provident', u'body': u'eum non blanditiis soluta porro quibusdam voluptas\nvel voluptatem qui placeat dolores qui velit aut\nvel inventore aut cumque culpa explicabo aliquid at\nperspiciatis est et voluptatem dignissimos dolor itaque sit nam', u'userId': 10, u'id': 97}, {u'title': u'laboriosam dolor voluptates', u'body': u'doloremque ex facilis sit sint culpa\nsoluta assumenda eligendi non ut eius\nsequi ducimus vel quasi\nveritatis est dolores', u'userId': 10, u'id': 98}, {u'title': u'temporibus sit alias delectus eligendi possimus magni', u'body': u'quo deleniti praesentium dicta non quod\naut est molestias\nmolestias et officia quis nihil\nitaque dolorem quia', u'userId': 10, u'id': 99}, {u'title': u'at nam consequatur ea labore ea harum', u'body': u'cupiditate quo est a modi nesciunt soluta\nipsa voluptas error itaque dicta in\nautem qui minus magnam et distinctio eum\naccusamus ratione error aut', u'userId': 10, u'id': 100}]
16:39:54.031 [Jython-Netty-Client-0] DEBUG org.python.netty.buffer.PoolThreadCache - Freed 4 thread-local buffer(s) from thread: Jython-Netty-Client-0